首页 > 试题广场 >

组成数字1到1234的所有数字的各位的总和是[$##$]

[填空题]
组成数字1到1234的所有数字的各位的总和是1
千位上出现数字和为1*235=235
百位上出现数字和为45*100+1*100+2*35=4670
十位上出现数字和为45*120+1*10+2*10+3*5=5445
个位上出现数字和为123*45+4+3+2+1=5545
235+4670+5445+5545=15895
发表于 2019-08-21 09:18:39 回复(3)
int sum = 0;
for(int i = 1; i <= 1234; ++i){
    int temp = i;
    while(temp){
        sum += (temp%10);
        temp /= 10;
    }
}

发表于 2019-08-12 16:22:16 回复(0)
0~9各个位数相加是从0加到9--》45
10~19各个位数相加是从1~10--》55
20~29各个位数相加是从2~11--》65
。。。
90~99===========9~18--》135
得900
————————————————
100~109==========1~10--》55
。。。
190~199==========10~19--》145
得1000
————————————————
200~209
。。。
290~299
得1100
—————————————————

1200
————————————————————
1300
——————————————————
900~999
1800
——————————————————

注意变化
1000~1099
950
——————————————————
1100~1199
1050
——————————————
1200~1234
295

找到规律了,自己算有多少,就可以算了,

编辑于 2019-08-21 20:50:20 回复(0)
sum = 0
    for i in range(1, 1235, 1):
        s = str(i)
        for j in s:
            sum += int(j)

发表于 2019-08-09 16:45:26 回复(1)

个位上出现数字和:

1.一位数:1-9 *1次

2.二位数: *9次

3.三位数: *90次

4.四位数: *20(1 2 10 ?) *3(1 3 ?) +1+2+3+4

发表于 2020-04-04 15:55:56 回复(0)
从0加到9,从10加到99,从100加到999,从1200加到1234,这中间是有规律的,比如0加到9就是9*5,10到99就是19*45,后面的都是按这样的规律来

发表于 2019-08-24 21:09:38 回复(0)
这个怎么做啊,考试的时候又不能编程
发表于 2019-08-19 15:04:54 回复(0)
递归实现
public static void main(String[] args) {
    int res = 0;
    for (int i = 1; i <= 1234; i++) {res += sum(i);}
    System.out.println(res);
}
public static int sum (int num){
    int temp = num/10;
    if (temp==0){return num;}
    return num%10 + sum(temp);
}


发表于 2021-02-01 18:59:27 回复(0)
int sum = 0; for (int i = 1; i <= 1234; i++) { int temp = i; while (temp != 0){ sum += (temp%10); temp /= 10; } } System.out.println(sum);
发表于 2019-10-22 11:24:26 回复(0)
0 ~ 9 之和:45

个位:123个45,加上个位0~4,共123 * 45 + 4 + 3 + 2 + 1
千位:从1000~1234,有235个1,共235 * 1 

十位:高位看,120个45,低位看,10~34,有10个1,10个2,3个5,共45 * 12 * 10 + 10 * 1 + 10 * 2 + 3 * 5
百位:高位看,100个45,低位看,100~234,有100个1,35个2,共45 * 1 * 100 + 100 * 1 + 35 * 2 

类似的题可以看1~n,有多少个1的题。
编辑于 2019-10-06 15:05:12 回复(0)
我没懂,我怎么算出来的是5545
发表于 2019-08-15 17:51:39 回复(1)
public class Test1 {
//    组成数字1到1234的所有数字的各位的总和是
    public static void main(String[] args) {
        int num=0;
        int ten=0;
        int hundred=0;
        int thousand=0;
        int sum=0;
        for(int i=1;i<1235;i++) {
            if(i>=1000) {
                //大于1000的数
                thousand=i/1000;
                hundred=(i-1000*thousand)/100;
                ten=(i-hundred*100-thousand*1000)/10;
                num=i-ten*10-hundred*100-thousand*1000;
            }else if(i>=100){
                //1000以内的数
                hundred=i/100;
                ten=(i-hundred*100)/10;
                num=i-ten*10-hundred*100;
            }else if(i>=10) {
                //100以内的数
                ten=i/10;
                num=i-ten*10;
            }else {
                //十以内的数
                num=i;
            }
            sum=sum+thousand+hundred+ten+num;
           //重置数字
            thousand=0;
            hundred=0;
            ten=0;
            num=0;
        }
        System.out.println(sum);
    }
}
发表于 2019-08-08 16:57:09 回复(0)
怎么做
发表于 2021-03-24 17:29:22 回复(0)
1
发表于 2020-09-24 10:41:48 回复(0)

1........1234,共计1235个数,个位数从1,2,3,4,5,6,7,8,9,0;(123总计)1,2,3,4

answer=45 •123+10=5545

编辑于 2020-05-26 06:06:20 回复(0)
思路:个位之和+十位之和+百位之和+千位之和,找到规律:
          个位:45*123+1+2+3+4
          十位:450*12+1*10+2*10+3*5
          百位:45*100+1*100+2*35
          千位:1*235
            
发表于 2020-04-04 12:20:33 回复(0)

45+2×45+3×45+1+45×3

发表于 2020-03-31 22:33:18 回复(0)

对每个数字取余取模相加

发表于 2020-03-17 02:30:36 回复(0)
截断二进制指数退避算法解决了
发表于 2020-03-14 14:45:27 回复(0)
public class test {
    public static void main(String[] args) {
            int sum = 0;
                for (int i = 1; i <= 1234; i++) {
                    int temp = i;
                    if(i<=9) {
                        sum+=temp;
                    }
                    if(i>9&&i<=99) {
                        sum+=(temp/10+temp%10);
                    }
                    if(i>99&&i<=999) {
                        sum+=(temp/100+(temp%100)/10+temp%10);
                    }
                    if(i>999) {
                        sum+=(temp/1000+(temp%1000)/100+(temp%100)/10)+temp%10;
                    }
                }
                System.out.println(sum);
    }
}
发表于 2020-03-10 22:40:46 回复(0)