来自GOOGLE的Kickstart测试题
Problem A. Even Digits
Input
The first line of the input gives the number of test cases, T. T test cases follow. Each begins with one line containing an integer N: the integer initially displayed on Supervin's calculator.
Output
For each test case, output one line containing Case #x: y
, where x
is the test case number (starting from 1) and y
is the minimum number of button presses, as described above.
Limits
1 ≤ T ≤ 100.
Small dataset
1 ≤ N ≤ 105.
Large dataset
1 ≤ N ≤ 1016.
My Code(Important part):
while(1){
num1[0]=k1%10;
num1[1]=((k1-num1[0])%100)/10;
num1[2]=((k1-num1[1]*10-num1[0])%1000)/100;
num1[3]=((k1-num1[2]*100-num1[1]*10-num1[0])%10000)/1000;
num1[4]=((k1-num1[3]*1000-num1[2]*100-num1[1]*10-num1[0])%100000)/10000;
num1[5]=((k1-num1[4]*10000-num1[3]*1000-num1[2]*100-num1[1]*10-num1[0])%1000000)/100000;
num1[6]=((k1-num1[5]*100000-num1[4]*10000-num1[3]*1000-num1[2]*100-num1[1]*10-num1[0])%10000000)/1000000;
if((num1[0]%2==0)&&(num1[1]%2==0)&&(num1[2]%2==0)&&(num1[3]%2==0)&&(num1[4]%2==0)&&(num1[5]%2==0)&&(num1[6]%2==0))
break;
else{
item1+=1;
k1+=1;
}
} //可以说非常复杂了……不过也想不出更精简的方法了:(
碎碎念:
今天在题目分析的帮助下总算把第一题解出来了……自己也是够弱的了。那天下午在解题的时候陷入了思维怪圈,非要把每个数先拆开成一个数组里的数,然后挨个加减,所以一直没能想出比较完美的解决方法。不过我也是在测试结果的时候发现需要I/O接口……然后又是一段时间的手忙脚乱,不过现在我能够完成有效的I/O接口了,算是弥补了之前大一做课设一直没能弄出来文件存储、传输的遗憾了。
1、文件的输入输出。一定要记得打开文件还要再把文件关上!!(也许之后的项目也可以沿用这个思路,不过可以后期丰富一下.exe文件的界面……)
2、注意数据范围。比如有的时候加法比减法step少,但是有可能会出现溢出现象,一开始我就没考虑到这个,后来发现有的数据结果不对,才发现了这个潜藏BUG,下次要多注意了。
3、整形数据和实形数据还是用数据本身做加减比较简单,都被上学期的数字逻辑折磨的忘了最简单的法则了,总是想分开加减……