CSU 1803:2016解题报告
本来是没有写博客的习惯,结果今天回头看自己A过的题,发现根本看不懂代码了,看着题目也完全没有思路,这就比较尬了,因此打算走上这条不归路。
言归正传,题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803
看到题目,我的第一感觉就是分解因数即2016=1*2016=2*1008=…………对2016分解一下质因数就知道有多少种了,2016 = 2^5 * 3^2 * 7,额,这个手动算起来有些麻烦。而且还有一点,题目要求a*b是2016倍数的数对个数,假设c*d=2016,那么(xc,yd)都满足条件了。这样我们只要求出(c,d)对应的x,y个数就好显然x <= m/c, y <= n/d。这就简单了,开两个数组,储存c,d对应的x,y就好,而对于c,d,一层for循环遍历一遍即可。求出来对应的x,y后又有一个麻烦的问题——判重,显然,2016的倍数也是1008的倍数,所以由容斥原理,我们可以将1008的倍数个数减去一个2016的倍数个数。那么继续算下去的时候,算到504的时候,发现要算出是504的倍数,但不是1008的倍数,也不是2016的倍数(没错,2016是1008的倍数,但我们之前已经减掉了,所以我们存的1008的倍数的个数实际上应该是是1008的倍数,而不是2016的倍数的个数),这个处理再用一层for循环处理就好了,然后最后用两层for循环遍历出i*j==2016的i和j,然后将i的倍数个数乘以j的倍数个数,最后加到计数器上即可。
最后代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>using namespace std;
typedef long long LL;
int main()
{
// freopen("in.txt", "r", stdin);LL m, n;while(~scanf("%lld%lld", &m, &n)){LL M[2017] = {0}, N[2017] = {0};for(int i = 2016; i; -- i){M[i] = m/i;N[i] = n/i;for(int j = i+1; j < 2017; ++ j)if(j % i == 0 && 2016 % i == 0 && (2016/i) % (j/i) == 0)N[i] -= N[j];}LL ans = 0;for(int i = 1; i < 2017; ++ i)for(int j = 1; j < 2017; ++ j)if(i * j == 2016)ans += M[i]*N[j];printf("%lld\n", ans);}return 0;
}
CSU 1803:2016解题报告相关推荐
- CSU 1803 2016(数论)
2016 Problem Description: 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1≤a≤n,1≤b≤m; a×b 是 2016 的倍数. Input: 输 ...
- CSU 1803: 2016
CSU 1803: 2016 水题 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数 ...
- CSU 1803 2016 (数学)【2016年湖南省第十二届大学生计算机程序设计竞赛 - A】
题目点我点我点我 湖南省第十二届大学生计算机程序设计竞赛 1803: 2016 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 289 Solve ...
- CSU 1803 2016
a,b可以表示成a=x*2016+i b=y*2016+j; a*b=x*y*2016^2+x*2016*j+y*2016*i+i*j; 其中除了i*j这一项,其他的项都是2016的倍数; 事先建立 ...
- 解题报告(一)D、(CROC 2016 - Final Round C)Binary Table(矩阵 + 状态压缩 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(
我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...
- 解题报告(一)快速沃尔什变换FWT(ACM / OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)
线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报 分类: ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
最新文章
- Parallel并行计算合计数据时错误的原因和解决办法
- java标识符与关键字_4、Java标识符和关键字
- 正在被巨大数据中心吞噬的全球电力,谷歌脸书和比特币的“源”罪
- php中函数声明的方法,PHP中的函数声明与使用
- 支持python开发的环境有哪些特点_Python虚拟环境详细教程,一篇带你入坑
- Android之使用ThumbnailUtils类来获取视频第一帧缩略图
- 首次结算和汇总不一致
- 【英语学习】【WOTD】wiseacre 释义/词源/示例
- Redis基础(一)——NoSQL
- Java--I/O输入输出流
- solr6.6 solrJ索引富文本(word/pdf)文件
- qt Graphic View 学习
- Python抠图程序源码
- RD client远程桌面
- html5基础了解---前端结构
- Java常用工具类-发短信(集成华软通信短信网关)
- MSI (Message Signaled Interrupts)
- 刚生了宝宝后需要及时办理的6个证件
- c语言标识符的开头字母能不能大写,C语言-标识符
- 7-4 求幂级数展开的部分和(20 分)
热门文章
- python实现之多元函数作图
- TFN天馈线测试仪的特点
- php无闪动刷新,简单的无闪动刷新页面/部分内容
- 如何在execl表格中打对勾和叉叉?
- 高斯日记、猜年龄、世纪末的星期、排他平方数、马虎的算式、振兴中华、组素数、第39级台阶
- 辰视冯良炳博士将于ITES机器视觉与机器人创新应用大讲台开讲
- 【NLP基础理论】03 文本分类
- C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
- 使用parted创建大分区时 mkpart Warning: The resulting partition is not properly aligned for best performance.
- 查找:update $push failed with “Resulting document after update is larger than 16777216”问题引起的原因