主题:输入两个正整数a和b,求a到b之间(包含a和b)所有数里面各位数字之和能够被3整除的数的总和。
zslym
[专家分:0] 发布于 2012-09-20 11:27:00
输入两个正整数a和b,求a到b之间(包含a和b)所有数里面各位数字之和能够被3整除的数的总和。
输入
两个正整数a和b
输出
符合条件的数的总和
样例输入
1 6
样例输出
9
提示
1<=a,b<=1000,注意a不一定小于b
回复列表 (共5个回复)
沙发
卫刃桦hua [专家分:0] 发布于 2012-11-05 16:43:00
#include
int main()
{int a,b,sum=0;
A:
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
if(a<=1||b>=1000)
{cout<<"数据超出范围,请重新输入!"<
板凳
bruceteen [专家分:42660] 发布于 2012-11-06 08:42:00
使得a<=b,我只想到 结果等于 = ( b/3 + (a+2)/3 )*( b/3 - (a+2)/3 + 1 )/2
3 楼
卫刃桦hua [专家分:0] 发布于 2012-11-06 13:49:00
[quote]使得a<=b,我只想到 结果等于 = ( b/3 + (a+2)/3 )*( b/3 - (a+2)/3 + 1 )/2[/quote]
不明白你要说什么
4 楼
xiaomarge [专家分:1980] 发布于 2012-11-06 18:47:00
int a,b,n,sum;
sum=0;
cout<<"Input range of data:(1,1000)"<<endl;
cin>>a>>b;
a=(a+2)/3*3;
b=b/3*3;
n=(b-a)/3+1;
sum=(a+b)*n/2;
cout<<"sum = "<<sum<<endl;
估计你没看明白!
5 楼
bujumingdebeishang [专家分:0] 发布于 2012-12-07 22:32:00
#include
using namespace std;
int main()
{ int a,b,count;
while(cin>>a>>b)
{ if(a<1||b>1000||a>b) //判断输入是否有效
{ cout<<"input is illegal";
return 1;
}
else for(int i=a;i<=b;i++) //判断a、b之间的数是否是3的整数倍
{ int sum,a1,a2,a3,a4;
a1=i/1000;
a2=(i-1000*a1)/100;
a3=(i-1000*a1-100*a2)/10;
a4=i%10;
sum=a1+a2+a3+a4;
if(!(sum%3)) count++;
}
cout<<"a、b之间能被三整除的整数有"<
我来回复