当一个正整数能被2或者3或者5或者7整除,我们定义这个数为or2数 给定正整数 , 求问这个数
https://ac.nowcoder.com/acm/contest/316/E
链接:https://ac.nowcoder.com/acm/contest/316/E
来源:牛客网
题目描述
当一个正整数能被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
这道题,x的范围为1e18,很明显不能打表,进行离线解决~~
但是我们可以打表找规律,不过这个规律可不好找~~
最后,我们来分析一下问题,这个题要求是输入n,求从1到n有多少个能被2,3,5,7整除的数
那么,能被2整除的数有n/2个,能被3整除的个数有n/3个,能被5整除的个数有n/5个,能被7整除的个数有n/7个
以上个数相加就可得出大致答案了,要想得出正确答案还要查重一下,比如:6能被2整除但是也能被3整除,那在计算的时候6被加入了两次,同样2*5,2*7,3*7,3*5,5*7,也被计算了两次,所以总数sum要减去n/6,n/14,n/21,n/35,,,,,,,,,
本以为这样就完了,,还有问题要考虑,比如:42,42能被2,3,7整除,所以加入三次,但是,还能被6,14,21整除,又减去了三次,所以还要重新加入一次,所以sum要加上n/(2*3*7)+(2*5*7)+(3*5*7)+(2*3*5),加上之后,这个数2*3*5*7==210又被多加入一次,所以要减去n/210
这时候sum就是要求的结果了
代码:
#include<bits/stdc++.h>
using namespace std;
#define mx 220
int main (){long long n=1;//一下注释是证明上述的正确性,不信的同学可以自己输出下/*for(int i=1;i<=mx;i++){if(i%2==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%3==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%5==0) printf("%d ",i);}printf("\n");for(int i=01;i<=mx;i++){if(i%7==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%6==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%10==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%14==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%15==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%21==0) printf("%d ",i);}printf("\n");for(int i=1;i<=mx;i++){if(i%35==0) printf("%d ",i);}printf("\n");printf("%lld\n",n);*/while(~scanf("%lld",&n)){if(n%2&&n%3&&n%5&&n%7) {printf("Scum\n");continue;}printf("or2 ");long long sum=0;sum+=n/2;sum+=n/3;sum+=n/5;sum+=n/7;sum-=n/6;sum-=n/10;sum-=n/14;sum-=n/15;sum-=n/21;sum-=n/35;sum+=n/30;sum+=n/70;sum+=n/42;sum+=n/105;sum-=n/210;printf("%lld\n",sum);}return 0;
}
今天坐地铁的时候,看见旁边的老外哭的一塌糊涂,边哭边对着电话那头说:你跟我在一起根本就不是因为爱情,你只是为了学英语!
这可能是个真实的故事~~
当一个正整数能被2或者3或者5或者7整除,我们定义这个数为or2数 给定正整数 , 求问这个数相关推荐
- 蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(<=10000) 输出 m 行(n有m
问题描述 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整数a,b ...
- 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。
今天和大家分享一道2009年代码为408的一道真题: 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链 ...
- 判断一个数是否为整数、正整数、小数通用算法
思路 用它本身减去它保留0位小数(建议不要四舍五入,直接舍去小数部分)的值和0去比较 如果大于0,说明这个数是小数 如果等于0,说明这个数是整数 不会出现小于0的情况. 如果还要判断是否是正整数,那么 ...
- 什么是质因数,质因数(素因数或质因子)在数论里是指能整除给定正整数的质数
什么是质因数,质因数(素因数或质因子)在数论里是指能整除给定正整数的质数 质因数(素因数或质因子)在数论里是指能整除给定正整数的质数. 除了1以外,两个没有其他共同质因子的正整数称为互质. 因为1没有 ...
- c++ 【1101】给定正整数a,b,ca,b,c。求不定方程 ax+by=cax+by=c 关于未知数xx和yy的所有非负整数解组数。
[题目描述] 给定正整数a,b,ca,b,c.求不定方程 ax+by=cax+by=c 关于未知数xx和yy的所有非负整数解组数. [输入] 一行,包含三个正整数a,b,ca,b,c,两个整数之间用单 ...
- JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...
- 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样...
神经网络结构设计指导原则 原文 http://blog.csdn.net/ybdesire/article/details/52821185 下面这个神经网络结构设计指导原则是Andrew NG在 ...
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...
- 华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求
N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求 华为面试被问手撕这道题. 输入分值:[1,2,3] 输出:5 解析:3+1+1 = 5. 但是 ...
- Java黑皮书课后题第8章:***8.35(最大块)给定一个元素为0或者1的方阵,编写程序,找到一个元素都为1的最大的子方阵。程序提示用户输入矩阵的行数。然后显示最大的子方阵的第一个元素、行数
***8.35(最大块)给定一个元素为0或者1的方阵,编写程序,找到一个元素都为1的最大的子方阵.程序提示用户输入矩阵的行数.然后显示最大的子方阵的第一个元素.行数 题目 题目描述与运行示例 破题 代 ...
最新文章
- windows 如何cmd启动redis
- 商用故事|泰华amp;华为手牵手,点亮城市照明
- 基于经验的SOA成功原则
- outlook邮箱邮件大小限制_配置邮箱的邮件大小限制: Exchange 2013 帮助 | Microsoft Docs...
- Python常用命令行(持续更新)
- QT显式调用VC开发的DLL
- 华为桌面云 服务器可以虚拟多少,【华为桌面云】案例:单服务器环境且只有两块本地SATA盘创建虚拟机非常慢...
- JQuery Datatables 样式Style
- C/C++:Windows编程—调用DLL程序的2种方法
- 2020年10月Oracle安全补丁:四个远程无凭证漏洞 两个内核级别漏洞需关注
- 【月报】Java知音的四月汇总
- JS保证输入框里面的数值是数字
- [转]supervisor 安装、配置、常用命令
- 蜡染印花的跟踪印花与二次整纬
- linux下搭建博客21天打卡Day6
- C语言猜数字小游戏---详解+源码
- 分享写SQL的21个好习惯!
- Ubuntu Linux,及Python matplot,安装Times New Roman等字体,让图标签可以用Times New Roman等字体
- crate部署(crateDB)
- 向国外发送邮件用什么邮箱?
热门文章
- C#语言实例源码系列-实现SMTP服务发送邮件
- 在绝望中寻找希望,人生终究辉煌——俞敏洪语录
- 纳税服务系统【条件查询数据回显、分页】
- 清风数学建模课笔记-多元回归分析
- Codeforces 208A Dubstep
- html5 球形选择,HTML5/SVG使用D3.js构建的随机球形(球幕)照片墙
- zabbix报错:Cannot perform request: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
- Django学习(二):数据库操作
- 【Docker】Docker命令整理示例
- Mybatis Laz-Load功能实现代码赏析(原创)