注意。java里面的long只能到19位。题目要求是20位。。天。坑了我好长时间
题目链接点击打开链接
import java.util.Scanner;
import java.math.*;
public class Solution
{
public static void main(String args[])
{
Scanner in=new Scanner(System.in);
String input=in.next();
BigDecimal INPUTLONG=new BigDecimal(input);
BigDecimal RESULT=INPUTLONG.multiply(new BigDecimal(2));
String strTemp=INPUTLONG.toString();
int lengthInput=strTemp.length();
strTemp=RESULT.toString();
int lengthResult=strTemp.length();
// System.out.printf("%s %s",lengthInput,lengthResult);
if(lengthInput!=lengthResult)
{
System.out.println("No");
System.out.println(RESULT);
return;
}
int numberFlat[]=new int [10];
for(int i=0;i<10;i++)
{
numberFlat[i]=0;
}
for(int i=0;i<lengthInput;i++)
{
numberFlat[(INPUTLONG.remainder(new BigDecimal(10))).intValue()]++;
INPUTLONG=INPUTLONG.divide(new BigDecimal(10));
}
BigDecimal temp=RESULT;
for(int i=0;i<lengthInput;i++)
{
numberFlat[(temp.remainder(new BigDecimal(10))).intValue()]--;
temp=temp.divide(new BigDecimal(10));
}
//verify
Boolean flag=true;
for(int i=0;flag&&i<=9;i++)
{
if(numberFlat[i]==0)
{
continue;
}
else
{
flag=false;
}
}
if(flag)
{
System.out.println("Yes");
}
else
{
System.out.println("No");
}
System.out.println(RESULT);
}
}