or2?Scum! 西安电子科技大学第二届程序设计新生赛(同步赛)

链接:https://ac.nowcoder.com/acm/contest/316/E
来源:牛客网

 

题解: 容斥原理,  四个集合的容斥

A∪B∪C∪D=|A|+|B|+|C|+|D| - |A∩B| - |B∩C| - |C∩A|- |A∩D| - |B∩D| - |C∩D|
+|A∩B∩C|+|A∩B∩D| +|A∩C∩D| +|B∩C∩D| -|A∩B∩C∩D| 

代码

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int main(){
    ll n;
    while(scanf("%lld",&n)!=EOF){
        if(n%2==0||n%3==0||n%5==0||n%7==0){
            cout<<"or2 ";
            cout<<n/2+n/3+n/5+n/7  -n/6-n/10-n/14-n/15-n/21-n/35  +n/30+n/42+n/105+n/70  -n/210<<endl;
        }
        else{
            cout<<"Scum"<<endl;
        }
    }
    return 0;
}

时间限制: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
posted @ 2018-12-08 18:05  UUUUh  阅读(163)  评论(0编辑  收藏  举报