y1___1y 2021-08-25 16:39 采纳率: 66.7%
浏览 169
已结题

51nod题目 n位不重复的数字

今天的数学课让你感到很无聊。于是你打算在纸上写下所有n位不含重复数字的数,来打发时间。

例如:你打算写6位数,那么你会写下127643;而123347含重复的3,你不会写下它。

你决定由小到大写出每个数,并且你不会考虑含前导0的n位数。

输入
输入一个数n,表示你打算写n位数。
输出
每行输出一个数,表示你所写下的n位数。
数据范围
对于100%的数据,1≤n≤8;
输入样例
1
输出样例
1
2
3
4
5
6
7
8
9

  • 写回答

5条回答 默认 最新

  • aabyte 2021-08-25 19:06
    关注

    这个应该能过了!

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int main()
    {
        int n=0,a=0,b=0;
        scanf("%d",&n);
        if(n==1)
            a=1,b=9;
        if(n==2)
            a=10,b=98;
        if(n==3)
            a=102,b=987;
        if(n==4)
            a=1023,b=9876;
        if(n==5)
            a=10234,b=98765;
        if(n==6)
            a=102345,b=987654;
        if(n==7)
            a=1023456,b=9876543;
        if(n==8)
            a=10234567,b=98765432;
        for(int i=a; i<=b; i++) //遍历所有n位数
        {
            int arr[10]= {0};
            int index=0,num=i,flag=1;
            while (num>0)
            {
                index = num % 10;
                if (arr[index])
                {
                    flag=0;
                    break;
                }
                arr[index] = 1;
                num /= 10;
            }
            if(flag)
                printf("%d\n",i);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月26日
  • 已采纳回答 8月26日
  • 创建了问题 8月25日

悬赏问题

  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件