Wwerday 2021-11-09 00:27 采纳率: 100%
浏览 36
已结题

找出一个三位数abc,abc的二倍和三倍所含的数字都不同

img


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,c,d,e,f,g,h,i,n;
    int sum=0;
    for(a=1; a<=3; a++){
        for(b=1; b<=9; b++){
            for(c=1; c<=9; c++){
                n = a*100 + b*10 + c;
                if(n>=123 && n<333){
                d = 2*n/100;
                e = 2*n/10%10;
                f = 2*n%10;
                g = 3*n/100;
                h = 3*n/10%10;
                i = 3*n%10;
                int A[10]={0};
    A[a]=1;A[b]=1;A[c]=1;A[d]=1;A[e]=1;A[f]=1;A[g]=1;A[h]=1;A[i]=1;
    for(i=1; i<10; i++)
        sum += A[i];
    if(sum == 9)
        printf("%d%d%d %d%d%d %d%d%d\n",a,b,c,d,e,f,g,h,i);
                }
    }
        }
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2021-11-09 07:36
    关注
    #include <stdio.h>
    #include <stdlib.h>
     
    int check(int *a, int aSize) {         // (1) 检测数组中是否有重复元素; 
        int i;
        int hash[10] = {};
        for(i = 0; i < aSize; ++i) {
            if(a[i] == 0) {
                return 0;
            } 
            
            if(hash[ a[i] ]) {
                return 0;
            }
            hash[ a[i] ] = 1;
        }
        return 1;
    }
    
    int main() {
        int a, b, c; 
        int n, n2, n3;
        int num[10]; 
        for(a=1; a<=3; a++){
            for(b=1; b<=9; b++){
                for(c=1; c<=9; c++){        // (2) 枚举三个数字; 
                    n = a*100 + b*10 + c;
                    n2 = n*2;
                    n3 = n*3;
                    if(n3 > 999) break;     // (3) 如果最大的数超过三位数,gg;
                    
                    num[0] = a;             // (4) 将涉及到的9个数字填充到数组中; 
                    num[1] = b;
                    num[2] = c;
                    num[3] = n2/100;
                    num[4] = n2/10%10;
                    num[5] = n2%10;
                    num[6] = n3/100;
                    num[7] = n3/10%10;
                    num[8] = n3%10;
                    
                    if( check(num, 9) ) {   // (5) 检测均不重复后输出; 
                        printf("%d %d %d\n", n, n2, n3);
                    }
                } 
            }
        }
        return 0;
    }
    

    输出如下:

    192 384 576
    219 438 657
    273 546 819
    327 654 981
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件