1059. 좋은 구간
수학
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int L = sc.nextInt();
int U = sc.nextInt();
Sum s = new Sum();
long result = s.calcNum(U)-s.calcNum(L)+s.sumNums();
System.out.println(result);
}
}
class Sum{
long[] sum = new long[9];
int[] nums = new int[10];
Sum(){
Arrays.fill(nums, 0);
sum[0] = 45;
for (int i = 1; i < sum.length; i++) {
sum[i]=0;
for (int j = 0; j < 10; j++) {
sum[i] += sum[i-1] + Math.pow(10, i)*j;
}
}
}
public int sumNums(){
int result = 0;
for (int i : nums) {
result += i;
}
return result;
}
public long calcNum(int num) {
Arrays.fill(nums, 0);
long result = 0;
int mNum = 0;
for(int i = 0; num != 0; i++){
nums[i] = num%10;
num /= 10;
}
for(int i = nums.length-1; i> 0; i--) {
for (int j = 0; j < nums[i]; j++) {
result += sum[i-1] + Math.pow(10, i)*j + Math.pow(10, i)*mNum;
}
mNum += nums[i];
}
for (int i = 0; i <= nums[0]; i++) {
result += i + mNum;
}
return result;
}
}