本来是没有写博客的习惯,结果今天回头看自己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解题报告相关推荐

  1. CSU 1803 2016(数论)

    2016 Problem Description: 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1≤a≤n,1≤b≤m; a×b 是 2016 的倍数. Input: 输 ...

  2. CSU 1803: 2016

    CSU 1803: 2016 水题 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数 ...

  3. CSU 1803 2016 (数学)【2016年湖南省第十二届大学生计算机程序设计竞赛 - A】

    题目点我点我点我 湖南省第十二届大学生计算机程序设计竞赛 1803: 2016 Time Limit: 5 Sec   Memory Limit: 128 MB Submit: 289   Solve ...

  4. 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的倍数; 事先建立 ...

  5. 解题报告(一)D、(CROC 2016 - Final Round C)Binary Table(矩阵 + 状态压缩 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  6. 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(

    我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...

  7. 解题报告(一)快速沃尔什变换FWT(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  8. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  9. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. Parallel并行计算合计数据时错误的原因和解决办法
  2. java标识符与关键字_4、Java标识符和关键字
  3. 正在被巨大数据中心吞噬的全球电力,谷歌脸书和比特币的“源”罪
  4. php中函数声明的方法,PHP中的函数声明与使用
  5. 支持python开发的环境有哪些特点_Python虚拟环境详细教程,一篇带你入坑
  6. Android之使用ThumbnailUtils类来获取视频第一帧缩略图
  7. 首次结算和汇总不一致
  8. 【英语学习】【WOTD】wiseacre 释义/词源/示例
  9. Redis基础(一)——NoSQL
  10. Java--I/O输入输出流
  11. solr6.6 solrJ索引富文本(word/pdf)文件
  12. qt Graphic View 学习
  13. Python抠图程序源码
  14. RD client远程桌面
  15. html5基础了解---前端结构
  16. Java常用工具类-发短信(集成华软通信短信网关)
  17. MSI (Message Signaled Interrupts)
  18. 刚生了宝宝后需要及时办理的6个证件
  19. c语言标识符的开头字母能不能大写,C语言-标识符
  20. 7-4 求幂级数展开的部分和(20 分)

热门文章

  1. python实现之多元函数作图
  2. TFN天馈线测试仪的特点
  3. php无闪动刷新,简单的无闪动刷新页面/部分内容
  4. 如何在execl表格中打对勾和叉叉?
  5. 高斯日记、猜年龄、世纪末的星期、排他平方数、马虎的算式、振兴中华、组素数、第39级台阶
  6. 辰视冯良炳博士将于ITES机器视觉与机器人创新应用大讲台开讲
  7. 【NLP基础理论】03 文本分类
  8. C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
  9. 使用parted创建大分区时 mkpart Warning: The resulting partition is not properly aligned for best performance.
  10. 查找:update $push failed with “Resulting document after update is larger than 16777216”问题引起的原因