欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}
相关标签: c++