1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1
/** * 1到1亿的自然数,求所有数的拆分后的数字之和, * 如286 拆分成2、8、6, * 如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1 * @param args */ public static void main(String[] args) { /** * 思路分析 * 个位数:十位数:百位数:千位数:万位数:十万位数:百万位数:千万位数:亿 */ int a=1+2+3+4+5+6+7+8+9;//a=45 int aa=10+a+2*10+a+3*10+a+4*10+a+5*10+a +6*10+a+7*10+a+8*10+a+9*10+a;//=10*(1+2+3+4+5+6+7+8+9)+9a; int aaa=100+aa+2*100+aa+3*100+aa+4*100+aa+5*100+aa +6*100+aa+7*100+aa+8*100+aa+9*100+aa;//=100a+9aa int aaaa=1000+aaa+2*1000+aaa+3*1000+aaa+4*1000+aaa+5*1000+aaa +6*1000+aaa+7*1000+aaa+8*1000+aaa+9*1000+aaa;//=1000a+9aaa int aaaaa=10000+aaaa+2*10000+aaaa+3*10000+aaaa+4*10000+aaaa+5*10000+aaaa +6*10000+aaaa+7*10000+aaaa+8*10000+aaaa+9*10000+aaaa;//=10000a+9aaaa; int aaaaaa=100000+aaaaa+2*100000+aaaaa+3*100000+aaaaa+4*100000+aaaaa+5*100000+aaaaa +6*100000+aaaaa+7*100000+aaaaa+8*100000+aaaaa+9*100000+aaaaa;//=100000a+9aaaaa; int aaaaaaa=1000000+aaaaaa+2*1000000+aaaaaa+3*1000000+aaaaaa+4*1000000+aaaaaa+5*1000000+aaaaaa +6*1000000+aaaaaa+7*1000000+aaaaaa+8*1000000+aaaaaa+9*1000000+aaaaaa;//=1000000a+9aaaaa; Long aaaaaaaa=((10000000l*a)+(9l*aaaaaaa)); int aaaaaaaaa=1; System.out.println(a); System.out.println(aa); System.out.println(aaa); System.out.println(aaaa); System.out.println(aaaaa); System.out.println(aaaaaa); System.out.println(aaaaaaa); System.out.println(aaaaaaaa); System.out.println(aaaaaaaaa); long sum=a*(1+10+100+1000+10000+100000+1000000+10000000)+9l*(a+aa+aaa+aaaa+aaaaa+aaaaaa+aaaaaaa)+aaaaaaaaa; System.out.println(sum);
输出结果是:
45 855 12195 154755 1842795 21085155 234766395 2562897555 1 2820759751
网上看到的题目,自己尝试写的。
微信公众号: 架构师日常笔记 欢迎关注!