2018.3.20 小记

来自GOOGLE的Kickstart测试题

Problem A. Even Digits

Input

The first line of the input gives the number of test cases, TT 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、整形数据和实形数据还是用数据本身做加减比较简单,都被上学期的数字逻辑折磨的忘了最简单的法则了,总是想分开加减……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值