Problem 2089 数字游戏

来源:互联网 发布:java private和protect 编辑:程序博客网 时间:2024/04/23 16:51

Problem Description

现在,给你2个整形数字A和B。你的任务就是计算出A+B的结果C后,统计C中数字5出现的次数。

 Input

输入数据第一行包含一个整数T,表示测试数据的组数。对于每组测试数据:

输入两个整数a,b(-2*10^9<a,b<2*10^9)。两个数字之间用空格隔开。

 Output

对于每组测试数据,输出一行,包含一个整数,表示数字5出现的次数。

 Sample Input

2
4 5
33 22

 Sample Output

0
2

算法没什么难的,就是处理大数据罢了,这里用的是Java中的BigInteger,蛮方便的,只要从最低位依次判断是否为5,一直到最高位,记录下为5的个数就可以了。
要提交的时候把Fzu2089改成Main即可
代码如下:

import java.math.BigInteger;import java.util.Scanner;public class Fzu2089 {public static void main(String[] args) {Scanner s = new Scanner(System.in);int T = s.nextInt();while(T-->0){String firststr = s.next();String secondstr  = s.next();BigInteger first = new BigInteger(firststr);BigInteger second = new BigInteger(secondstr);BigInteger sum = first.add(second);BigInteger iCount = new BigInteger("0");//记录5出现的次数BigInteger iFactor = new BigInteger("1");//记录当前位,个位,百位,千位..BigInteger iCurrNum = new BigInteger("0");//记录当前的数字BigInteger zero = new BigInteger("0");BigInteger one = new BigInteger("1");BigInteger ten = new BigInteger("10");BigInteger five = new BigInteger("5");while(sum.divide(iFactor).compareTo(zero)!=0){iCurrNum = sum.divide(iFactor).mod(ten);//个数是什么数字,百位是什么数字,千位是什么数字..if(iCurrNum.compareTo(five)==0){iCount = iCount.add(one);//如果当前位是5,则加1.}iFactor = iFactor.multiply(ten);//从个位变成百位,千位,万位,直到最高位为至}System.out.println(iCount.toString());}}}




原创粉丝点击