题目 1166:
求[X,Y]内被除3余1并且被除5余3的整数的和
时间限制: 1Sec 内存限制: 128MB 提交: 2291 解决: 1917
题目描述
输入两个正整数X,Y,求出[X,Y]内被除3余1并且被除5余3的整数的和
输入格式
输入两个正整数X,Y
输出格式
求所有满足条件的数的和
样例输入
复制
200 800
样例输出
复制
20020
我的话:这题就是给自己提个醒,x,y这两个数都很小可以直接一个一个找,我用的第一种方法,就是先找到第一个符合要求的数字,然后就是一个等差数列了,用等差数列求和方法计算但是时间复杂度和内存都比遍历的那个高
我的代码:
#include<iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
int k=0;
for(int i=x;i<=y;i++)
{
if(i%5==3&&i%3==1)
{
k=i;
break;
}
}
if(k==0)cout<<"0"<<endl;
else printf("%d\n",(k+k+15*((y-k)/15))*(1+(y-k)/15)/2);
}
遍历的代码:
#include<stdio.h>
void
swap(
int
*x,
int
*y);
void
output(
int
x,
int
y);
int
main()
{
int
x,y;
while
(
scanf
(
"%d%d"
,&x,&y)!=EOF)
{
if
(x<y)
output(x,y);
else
output(y,x);
}
return
0;
}
/*---------------------------------------*/
void
output(
int
x,
int
y)
{
int
sum=0;
for
(
int
i=x;i<=y;i++)
{
if
((i%3==1)&&(i%5==3))
sum+=i;
}
printf
(
"%d\n"
,sum);
}