链接:https://ac.nowcoder.com/acm/contest/316/E
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
当一个正整数能被2或者3或者5或者7整除,我们定义这个数为or2数 给定正整数 ,
求问这个数是否是or2数,如果是,则输出他是第几大的or2数,否则输出Scum
输入描述:
多组数据(不超过1e5组,读到文件结束) 每组数据一行:一个正整数x(1≤x≤1e18)
输出描述:
对于每个输入,输出一行。 如果是or2数,输出or2 c,表示它是第c大的or2数 否则输出字符串Scum
示例1
输入
2 4 11
输出
or2 1 or2 3 Scum
题解:周期性规律,细节在代码
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int prime[1000005];
bool vis[1000005];
int main()
{
long long int n;
int sum=0;
for(int t=1;t<=210;t++)
{
if(t%2==0||t%3==0||t%5==0||t%7==0)
{
sum++;
}
}
while(scanf("%lld",&n)!=EOF)
{
int s=n%210;
int s1=0;
for(int t=1;t<=s;t++ )
{
if(t%2==0||t%3==0||t%5==0||t%7==0)
{
s1++;
}
}
if(n%2==0||n%3==0||n%5==0||n%7==0)
printf("or2 %lld
",n/210*sum+s1);
else
{
printf("Scum
");
}
}
}