牛牛选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,牛牛会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum.
例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564.
牛牛现在给出一个sum,牛牛想让你求出一个正整数X经过上述过程的结果是sum.
输入包括正整数sum(1 ≤ sum ≤ 10^18)
输出一个正整数,即满足条件的X,如果没有这样的X,输出-1。
564
509
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long X = sc.nextLong(); int length=String.valueOf(X).length(); long a=fun(length,X); long b=fun(length-1,X); if(a==-1&&b==-1) System.out.println(-1); else if(a!=-1) System.out.println(a); else if(b!=-1) System.out.println(b); } /** * 获得长度为length,每一位都为num的数字 * @param length * @param num * @return */ public static long get_num(int length,int num){ long ans=0; for(int i=1;i<=length;i++){ ans=ans*10+num; } return ans; } public static long fun(int length,long X){ long ans=0; for(int j=length;j>0;j--){ for(int k=9;k>=0;k--){ if(X>=get_num(j,k)){ X-=get_num(j,k); ans=ans*10+k; break; } } } return X==0?ans:-1; } }通过全部用例