C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表区间数字相加输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 14:04:10

C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表区间数字相加输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上
C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表
区间数字相加
输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上数字累加和输入样例:998 1002输出样例:59样例说明:共有 998、999、1000、1001、1002 五个数     (9+9+8)+(9+9+9)+(1+0+0+0)+(1+0+0+1)+(1+0+0+2) = 59

C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表区间数字相加输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上

这是一道ACM的编程题吧,发给你一份参考参考吧,希望对你有帮助,此份已AC.

#include<cstdio>
#include<cstring>
long long num[10];
long long NUM[10];
void S1(int value)
{
    int a=value;
    int weight=1,left=value/10,right=a%weight;
    int S=value%10;
    value/=10;
    while(value!=0)
    {
        for(int k=0; k<=9; k++)
        {
            if(k==0)
            {
                if(S==0) num[0]+=(left-1)*weight+right+1;
                else if(S>0) num[0]+=left*weight;
            }
            else
            {
                if(S>k)
                    num[k]+=(left+1)*weight;
                else if(S==k)
                    num[k]+=left*weight+right+1;
                else if(S<k)
                    num[k]+=left*weight;
            }
        }
        weight*=10;
        left=value/10;
        right=a%weight;
        S=value%10;
        value/=10;
    }
    //最高位
    for(int k=0; k<=9; k++)
    {
        if(k==0)
        {
            if(S==0) num[0]+=(left-1)*weight+right+1;
            else if(S>0) num[0]+=left*weight;
        }
        else
        {
            if(S>k)
                num[k]+=(left+1)*weight;
            else if(S==k)
                num[k]+=left*weight+right+1;
            else if(S<k)
                num[k]+=left*weight;
        }
    }
    return ;
}
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF && a && b)
    {
        memset(num,0,sizeof(num));
        memset(NUM,0,sizeof(NUM));
        if(a>b)
        {
            int temp=a;
            a=b;
            b=temp;
        }
        S1(a-1);
        for(int i=0; i<10; i++)
            NUM[i]=num[i];
        memset(num,0,sizeof(num));
        S1(b);
        for(int i=0; i<10; i++)
            printf("%lld%c",num[i]-NUM[i],i==9?'\n':' ');
    }
    return 0;
}

 

以上代码求出的就是[A,B]之间0-9每个数出现的次数.

按照你的要求只需要对num[i] - NUM[i]的差值求和就是了.也就是把74-75行改为一下代码:

long long sum = 0;
for(int i=0; i<10; i++)
    sum += num[i]-NUM[i];
printf("%lld\n", sum); //输出的值就是题目的要求.

计算 a + …… + b C++跪求用C++如何做计算 a + …… + b输入格式:二个正整数 a b (a C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表区间数字相加输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上 C语言,计算2个正整数的和,差,积,商并输出.题目保证输入和输出全部在整型范围内输入格式:输入在一行中给出2个正整数A和B.输出格式:在4行中按照格式“A 运算符 B = 结果”顺序输出和、差 输入两个正整数A,B,求A ,B的最小公倍数.输入格式两个数A和B(A、B 素数统计编程c语言给定一段连续的正整数,请判断其中素数的个数;输入描述输入数据包含2个正整数A和B(0 用c编写 素数统计给定一段连续的正整数,请判断其中素数的个数;输入描述输入数据包含2个正整数A和B(0 C语言新手 给定一段连续的正整数,请判断其中素数的个数输入数据包含2个正整数A和B(0 c语言 用英文单词模拟数学计算读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.具体的输入输出格式规定如下:输入格式:测试输入包含若干测 Description输入二个正整数x0,y0(2 C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位.a,b c语言 最大公约数【问题描述】从键盘依次输入3个正整数a、b、c,依次分别输出a和b两数、b和c两数、c和a两数及其最大公约数,以及a、b、c三数及其最大公约数.【输入形式】从键盘依次输入3个 入门级C语言题,输入两个正整数a和b(a C语言:输入一个正整数n,再输入n个正整数,判断它们是否为素数. 给定一段连续的正整数,请判断其中素数的个数;输入描述输入数据包含2个正整数A和B(0 C程序设计:输入2个正整数m和n(1 用C语言定义一个一维数组A,随机输入6个整数,将其中的正整数按输入的次序存储至另外一个一维整形数组B中分别输出这些正整数和按冒泡法排序后(由小到大)的正整数. 关于一元二次方程读入一元二次方程的3个系数a,b,c(double型变量)的值,求出各种情况下方程的跟,在无解或输入数据不合理是给出相应的提示信息.输入格式:scanf(%lf%lf%lf,&a,&b,&c);输出格式: 二—十进制8421BCD编码器有( )个输入端和( )个输出端.A.4 ,10 B.8 ,10 C.10 ,10 D.4 ,16