CSU Problem 1803 2016(同余定理)——湖南省第十二届大学生计算机程序设计竞赛
来源:互联网 发布:淘宝刷好评句子 编辑:程序博客网 时间:2024/05/22 03:16
此文章可以使用目录功能哟↑(点击上方[+])
CSU Problem 1803 2016
Accept: 0 Submit: 0
Time Limit: 5 Sec Memory Limit : 128 MB
Problem Description
给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:
1. 1≤a≤n,1≤b≤m;
2. a×b 是 2016 的倍数。
Input
输入包含不超过 30 组数据。
每组数据包含两个整数 n,m (1≤n,m≤10^9).
Output
对于每组数据,输出一个整数表示满足条件的数量。
Sample Input
32 63
2016 2016
1000000000 1000000000
2016 2016
1000000000 1000000000
Sample Output
1
30576
7523146895502644
30576
7523146895502644
Hint
Problem Idea
解题思路:
【题意】
求a×b是2016的倍数的正整数对(a,b)的数量
其中a∈[1,n],b∈[1,m]
【类型】
同余定理
【分析】
真心被自己蠢哭
硬是被一道水题卡了好久,不知道怎么去处理重复计算的问题
结果正解压根就不需要考虑
由同余定理得
这样,我们就可以将数据范围控制在2016以内
即记录[1,n]内 mod 2016 = i的个数a[i]
以及[1,m]内 mod 2016 = i的个数b[i]
这一步的时间复杂度为O(2016)
这样,我们只要将i*j%2016==0的所有情况a[i]*b[j]统计求和就可以了
【时间复杂度&&优化】
O(2016×2016)
题目链接→CSU Problem 1803 2016
Source Code
/*Sherlock and Watson and Adler*/#pragma comment(linker, "/STACK:1024000000,1024000000")#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<stack>#include<math.h>#include<vector>#include<map>#include<set>#include<bitset>#include<cmath>#include<complex>#include<string>#include<algorithm>#include<iostream>#define eps 1e-9#define LL long long#define PI acos(-1.0)#define bitnum(a) __builtin_popcount(a)using namespace std;const int N = 2016;const int M = 2005;const int inf = 1000000007;const int mod = 1000003;LL a[N],b[N];int main(){ int n,m,i,j; LL ans; while(~scanf("%d%d",&n,&m)) { ans=0; for(i=0;i<N;i++) a[i]=n/N,b[i]=m/N; for(i=1;i<=n%N;i++) a[i]++; for(i=1;i<=m%N;i++) b[i]++; for(i=0;i<N;i++) for(j=0;j<N;j++) if(i*j%N==0) ans+=a[i]*b[j]; printf("%lld\n",ans); } return 0;}菜鸟成长记
0 0
- CSU Problem 1803 2016(同余定理)——湖南省第十二届大学生计算机程序设计竞赛
- csu 2016年湖南省第十二届大学生计算机程序设计竞赛Problem A 2016
- CSU Problem 1809 Parenthesis(括号匹配,线段树,前缀和)——湖南省第十二届大学生计算机程序设计竞赛
- CSU 1803 2016 (数学)【2016年湖南省第十二届大学生计算机程序设计竞赛 - A】
- 【模拟】【数学】CSU 1803 2016 (2016湖南省第十二届大学生计算机程序设计竞赛)
- CSU 1803 2016【湖南省第十二届大学生计算机程序设计竞赛 A题】
- CSU Problem 1777 大还是小?——湖南省第十一届大学生计算机程序设计竞赛
- CSU Problem 1785 又一道简单题——湖南省第十一届大学生计算机程序设计竞赛
- CSU Problem 1779 错误的算法——湖南省第十一届大学生计算机程序设计竞赛
- CSU Problem 1781 阶乘除法——湖南省第十一届大学生计算机程序设计竞赛
- CSU Problem 1100 一二三——湖南省第七届大学生计算机程序设计竞赛
- CSU 1809 Parenthesis (线段树)【2016年湖南省第十二届大学生计算机程序设计竞赛 - G】
- 【贪心】CSU 1809 Parenthesis (2016湖南省第十二届大学生计算机程序设计竞赛)
- 【最短路】【STL】CSU 1808 地铁 (2016湖南省第十二届大学生计算机程序设计竞赛)
- 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)
- 【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)
- 【树状数组】CSU 1811 Tree Intersection (2016湖南省第十二届大学生计算机程序设计竞赛)
- 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)
- android从URL获取数据
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- Linux中编译C/C++多线程程序
- Poedu_计算机基础_lesson06_20160902_函数调用过程
- Java的发展
- CSU Problem 1803 2016(同余定理)——湖南省第十二届大学生计算机程序设计竞赛
- 高度自动化(三)-发布可靠软件的系统方法一书
- 排序
- 51822蓝牙协议之实例解析L2CAP协议
- JVM——HotSpot
- DRP:基本环境安装中遇到那些事儿
- 入侵检测系统概述
- 设计模式系列 1——StaticFactory(静态工厂),AbstractFactory(抽象工厂)
- redis-py