2 条题解

  • 4
    #include<iostream>
    using namespace std;
    
    int main()
    {
    cout<<"192 "<<"384 "<<"576"<<endl;
    cout<<"219 "<<"438 "<<"657"<<endl;
    cout<<"273 "<<"546 "<<"819"<<endl;
    cout<<"327 "<<"654 "<<"981"<<endl;
    return 0;
    }
    
  • 2

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

    int main()
    {
    int a[10], b[10], c[10], n1[999], n2[999], n3[999], s[10], i, j, k, f, t, r; //创建三个数组,用来存放1-9
    t = 1;
    for (i=1; i<=10; i++) //为三个数组赋值1-9
    {
    a[i] = i;
    b[i] = i;
    c[i] = i;
    }

    //### 列出符合“在1-9选三个数组成各位都不同”的第一个三位数 ###

    for (i=1; i<4; i++) //第一层循环控制第一位数(百位),并且剔除掉超过400的数
    {
    for (j=1; j<10; j++) //二层循环控制第二位(十位)
    {
    if (j!=i) //保证第二位中不含第一位的数字(剔除十位中的百位数字)
    {
    for (k=1; k<10; k++) //三层循环控制第一位(个位)
    {
    if (k!=i && k!=j) //保证不含第一、二位中的数(剔除个位中百、十位中数字)
    {
    n1[t] = a[i]*100 + b[j]*10 +c[k]; //将三位不同数字组合成第一个三位数
    n2[t] = n1[t] * 2; //第二个三位数
    n3[t] = n1[t] * 3; //第三个三位数
    t++; //确定符合条件的第一个三位数的个数,用于下面控制循环
    }
    }
    }
    }
    }

    //### 循环判断三个三位数所含数字在1-9中且各不相同 ##
    for (f=1; f<t; f++) //一层循环,循环遍历上面求出的在数组n*[]中的元素
    {
    if (n1[f]>191 && n1[f]<334) //确定所求第一位三位数在191-334之间,其余不符合条件
    { //把三个三位数中全部9个数存放在数组s[]中
    s[0] = n1[f] / 100;
    s[1] = (n1[f] % 100) / 10;
    s[2] = n1[f] % 10;
    s[3] = n2[f] / 100;
    s[4] = (n2[f] % 100) / 10;
    s[5] = n2[f] % 10;
    s[6] = n3[f] / 100;
    s[7] = (n3[f] % 100) / 10;
    s[8] = n3[f] % 10;
    r = 0; //r赋值0(清零)
    for (i=0; i<8; i++) //确保三个三位数中不含相同数字且不含数字0
    {
    for (j=i+1; j<9; j++)
    {
    if (s[i]==s[j] || s[i]==0 || s[j]==0) //如果有相同数字或有数字0则令r=1并跳转
    {
    r = 1;
    goto A;
    }
    }
    }

    A:
    if (r == 0) //如果各位数字均不同并且不含有数字0,则输出
    {
    printf("%d %d %d\n", n1[f], n2[f], n3[f]);
    }
    }
    }
    }

  • 1

信息

ID
1335
难度
3
分类
搜索 点击显示
标签
递交数
23
已通过
18
通过率
78%
上传者