C++实现(当n属于long范围时)给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数
程序员文章站
2024-01-20 20:45:04
...
来源:牛客网
输入描述:
本题有多组输入
每行一个数n,1<=n<=10^18.
输出描述:
每行输出输出不是2 5 11 13的倍数的数共有多少。
示例1
输入
15
输出
4
说明
1 3 7 9
题思路:先分别求有多少是2、5、11、13的倍数,设为sum1,然后分别求有多少是10(2和5最小公倍数)、22(2和11最小公倍数)、26(2和13最小公倍数)、55(5和11最小公倍数)、65(5和13最小公倍数)、143(11和13)最小公倍数的倍数,设为sum2,再分别求有多少是110(2、5、11最小公倍数)、130(2、5、13最小公倍数)、715(5、11、13最小公倍数)、286(2、11、13最小公倍数)的倍数,设为sum3,再求有多少是1430(2、5、11、13最小公倍数)的倍数,设为sum4。最后,不是2、5、11、13的倍数的数字有:[n-(sum1-sum2+sum3-sum4)]个.
#include<iostream>
using namespace std;
int main(){
long long sum1=0,sum2=0,sum3=0,sum4=0,key;
while(cin>>key){
long long sum=0;
sum1=key/2+key/5+key/11+key/13;
sum2=key/10+key/22+key/26+key/55+key/65+key/143;
sum3=key/110+key/130+key/286+key/715;
sum4=key/1430;
sum=key-(sum1-sum2+sum3-sum4);
cout<<sum<<endl;
}
return 0;
}
上一篇: mysql数据库索引 HASH和B树
下一篇: C++使用curl发送post请求