计蒜客2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 I . Reversion Count
Description:
There is a positive integer X, X’s reversion count is Y. For example, X=123, Y=321; X=1234, Y=4321. Z=(X-Y)/9, Judge if Z is made up of only one number(0,1,2…9), like Z=11,Z=111,Z=222,don’t consider ‘+’and ‘-‘.
Input:
Input contains of several test cases. Each test case only contains of a number X, L is the length of X. ( 2 <= L < 100)
Output:
Output “YES”or “NO”.
样例输入
10
13
样例输出
YES
YES
题意:给一个数X,求出它的逆转数Y,
然后求出Z = (X-Y)/9
判断Z的数值部分是不是只由一个数字组成
是的话输出“YES”
不是的话输出“NO”
AC代码
import java.io.BufferedInputStream;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
while(in.hasNext())
{
BigDecimal x;
x = in.nextBigDecimal();
String str = x.toString();
char[] ch;
int l = str.length();
ch = str.toCharArray();
char[] yc = new char[110];
BigDecimal y = BigDecimal.ZERO;
int pos = l;
BigDecimal p = BigDecimal.ONE;
for(int i = 0; i < l; i++)
{
yc[--pos]= ch[i];
int tmp = yc[pos]- '0';
BigDecimal tmp1 = BigDecimal.valueOf(tmp);
y = y.add(tmp1.multiply(p));
p = p.multiply(BigDecimal.TEN);
}
BigDecimal z = x.subtract(y);
z = z.divide(BigDecimal.valueOf(9));
z = z.abs();
boolean flag = true;
String zs = z.toString();
int l1= zs.length();
char[] zc = zs.toCharArray();
int po = zc[0];
for(int i = 1; i < l1; i++)
{
if(zc[i] != zc[0])
{
flag = false;
break;
}
}
if(flag)
System.out.println("YES");
else
System.out.println("NO");
}
}
}