小学校の数学の問題

トピック

4桁のabcdはA(つまり、数千、数百、数十、それぞれがa、b、c、d)であり、最小の4桁はその4桁のa、b、c、dで構成されます。Bとして示されます。
AB = 999の場合、そのような4桁の数字はいくつありますか?

C言語ソリューション:

#include <stdio.h>
int main()
{
    int a[4];
    int temp;  //插入排序辅助变量
    int j;
    int count=0;  //计数器
    for(int i =1000;i<10000;i++)
    {
        a[0]=i/1000;    //a
        a[1]=i/100%10;  //b
        a[2]=i/10%10;   //c
        a[3]=i%10;      //d
        for(int k=1;k<4;k++){  //插入排序
            temp=a[k];
            j=k;
            while(j>0 && a[j-1]>temp){
                a[j]=a[j-1];
                j--;
            }
            a[j]=temp;
        }
        if(a[0]==0){  //如果a[0]为0,把和左起第一个非0数交换 
            j=0;
            while(a[j]==0&&j<4){
                j++;
            }
            temp=a[0];
            a[0]=a[j];
            a[j]=temp;
        }
        if(i-(1000*a[0]+100*a[1]+10*a[2]+a[3]) == 999){  //A-B=999
            printf("%d ",i);  //A
            ++count;
            if(count%6==0)  //每6个换行 
                printf("\n") ;
            //printf("%d%d%d%d\n",a[0],a[1],a[2],a[3]);  //B
        }
    }
    printf("\n一共有%d个解\n",count);  //解个数
    return 0;
    //system("pause");
} 

出力結果は次のとおりです。

 

【回答分析】

AB = 999はA = B +(1000-1)を取得します。Bの最後の数が0でない場合、AはBに等しくなります。数千桁+1および1桁-1。逆に、BはA-1の1000桁と1桁+1に等しくなります。したがって、Bは(a-1)bc(d + 1)として表すことができます。

BとAを比較すると、位置bとcは交換されていませんが、aとdは交換されています。Bはdbcaとして表すことができるため、a = d +1です。aとdの値の組み合わせは、2bc1-1bc2 = 999、3bc2-2bc3 = 999、...、合計8つのグループです。
これらの組み合わせのいずれについても、a00d、a0dd、a0ad、adda、adad、aaadの6つの可能性があります。a = 4とd = 3を例にとると、4003、4033、4043、4333、4343、4443の6つの数字があります。乗算の原理によれば、合計8×6 = 48種類の4つの数字があります。条件を満たす桁数。

おすすめ

転載: blog.csdn.net/weixin_42467709/article/details/83449593