关闭

蓝桥杯模拟 猜算式

标签: 蓝桥杯cc++编程题
196人阅读 评论(0) 收藏 举报
分类:

问题

你一定还记得小学学习过的乘法计算过程,比如:

273
x 15
———
1365
  273
———
4095

这里写图片描述

星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)

请写出这个式子最终计算的结果,就是那个5位数是多少?

注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。


思路

用两个for循环暴力枚举就出来了


代码

#include <stdio.h>
#include "string.h"
int aa[20];
int main() {
    int a,b,c,d,e,f,g,h,sum;
    int x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19;
    for (a=100;a<1000;a++) {
        for (b=100;b<1000;b++) {
            c=b/100;//第一排第二个百位
            d=(b-c*100)/10;//十位
            e=(b-c*100-d*10);//个位

            f=a*e;//第二排第一个
            g=a*d;//第二排第二个
            h=a*c;//第三排第三个
            if (h>1000||f>1000||g>1000) {
                continue;
            }
            sum=a*b;
            if (sum>=100000) {
                continue;
            }
            x1=a/100;//第一排第一个百位
            x2=(a-x1*100)/10;//十位
            x3=(a-x1*100-x2*10);//十位

            x4=f/100;//第二排第一个百位
            x5=(f-x4*100)/10;
            x6=(f-x4*100-x5*10);

            x7=g/100;//第二排第二个百位
            x8=(g-x7*100)/10;
            x9=(g-x7*100-x8*10);

            x10=h/100;//第二排第三个百位
            x11=(h-x10*100)/10;
            x12=(h-x10*100-x11*10);

            x13=sum/10000;
            x14=(sum-x13*10000)/1000;
            x15=(sum-x13*10000-x14*1000)/100;
            x16=(sum-x13*10000-x14*1000-x15*100)/10;
            x17=(sum-x13*10000-x14*1000-x15*100-x16*10);

            aa[c]++;
            aa[d]++;
            aa[e]++;
            aa[x1]++;
            aa[x2]++;
            aa[x3]++;
            aa[x4]++;
            aa[x5]++;
            aa[x6]++;
            aa[x7]++;
            aa[x8]++;
            aa[x9]++;
            aa[x10]++;
            aa[x11]++;
            aa[x12]++;
            aa[x13]++;
            aa[x14]++;
            aa[x15]++;
            aa[x16]++;
            aa[x17]++;

            if(sum==f+g*10+h*100 && aa[0]==2 &&aa[1]==2 &&aa[2]==2 &&aa[3]==2 &&aa[4]==2 &&aa[5]==2 &&aa[6]==2 &&aa[7]==2 &&aa[8]==2 &&aa[9]==2 ){
                printf("%d*%d \n%d %d %d\n=%d",a,b,f,g,h,sum);
            }
            memset(aa, 0, sizeof(aa));
        }
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21415次
    • 积分:697
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:1篇
    • 译文:0篇
    • 评论:15条
    文章分类
    最新评论