C++ 输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 ) 输出格式:一个数,表区间数字相加输入格式:二个正整数 a b ( 1 ≤ a ≤ b ≤ 2100000000 )输出格式:一个数,表示区间 [a,b] 上各数的各位上
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/29 05:50:02
xY[sF+&;V%-д}>dxdI錡P%K $3
Bi)l?/tW+; $mLq9Gߞ=g
GRͮ%yzA)J(@;1U]+ՖJK"ܸ.U BŞYڬmvw;}뵟w^ެ٬JRg:NY%4X{ U_Pψ?J>(@x-aRˬWY$BBؖ;
IQ^v毢KgqBo b3IHRV&m? C0$Cn Q Bk]cLE9>_@g7/81zk՟6_w%au͞(Q<\)9vyq+?γ?'F##f*(h`"?53=8FPcY351HVJe7jB`w8u&siS#c `~NI d}ڞ٧ts"A8y2L8*dSacD `|f=/TLwgAh'jOʌ=ZV(䣽V툵}g#w1~G7G\9}:ߵw-|~[wKO<2}DY>(hlݛ!.&8(8v4;Qq$3?'c&c`"
ļG"8MY
7)8RO=xi炌}j1T,ras-jr٘|8gѴx:ET
X:I9s"%P)Tj" @m@ %H *,$Pr & y"e)zWQlв4QDU8*QN$`4ԥ-QwCr&Т (s<`J
8Z!Uc(6j @XDYUX"sK[ڨYʌtyyѾRW/^:3'[+ts\$P3 rJˏ%4Õ5XDuB5Duznkz質?EIÙ!1ڸWrnX{o3K]Z"od}
#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;
}
for(int i=0; i<10; i++)
sum += num[i]-NUM[i];
printf("%lld\n", sum); //输出的值就是题目的要求.
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