竖式问题
题目(自述):
一开始,我连题目都没看懂。。啧啧,后来研究了一下输出,才晓得。大概是这样的(我就不copy原题目了,浪费笔油,hhhhhhhh)
输入:一串数字
处理:找三位数乘以两位数(abc*de),在做乘法运算的时候涉及到的数字即为输入的那一串数字,如
775
x 33
————————
2325
+ 2325
________
25575 //你看,2357包含了这个竖式所含的所有数字
自我分析:
首先申明,我也不会呀,我就这么想想,而且先别看《自我分析》的备注。
我想到我小学做乘法题,一个数字不变,另外一个数字拆成个十百分位分别与那个不变的数字相乘,然后按照个十百分位的格式相加。
计算机如何做到让不同的数字个十百分位错乱的相加呢????后面的数字总是影响着前面的数字,而且影响的程度还是* 10、* 100…..的
<span style="color:#aa5500">/* 既然这么烦,当然当整型数字处理啦,当字符,天哪,我刚才是怎么想的啊*/</span>
而且我们要做的还是在屏幕上打印,里面还穿插着字符,城会玩。
<span style="color:#aa5500">/* 既然这么烦,当然当整型数字处理啦,当字符,天哪,我刚才是怎么想的啊*/</span>
打印就打印吧,还要打印出符合输入的所有的整式。。
有趣。
伪代码
scanf("%s",s);
for(abc=111;abc<=999;abc++){
for(de=11;de<=99;de++){
if(abc*de符合输入的那一串数字){
打印
count++;
}
}
}
printf("The number of solutions=%d\n",count);
乍一看,这还挺简单哦~~(保持这种自信,咱们继续)
难点逐个攻破
如何判断 “ abc*de以及竖式关联的数字 ” 符合输入的那一串数字
//abc不动,拆个数少的(这样我们加的次数少一点)
x=abc*(de%10);//de的个位和abc相乘得到的数(注意,不是字符啊)
y=abc*(de/10);//de的十位和abc相乘(注意,不是字符啊)
z=abc*de;//abc和de真正的乘机(注意,不是字符啊)
// 现在去看看自我分析的备(zong)注(jie) :)
//然后我们联系输入的数字和x,y,z之间符不符合(!!!难点,翻过这道大山就可以~~~~下山啦,噗> <