暴力脑洞-CSU1803
来源:互联网 发布:windows禁止程序联网 编辑:程序博客网 时间:2024/04/27 17:55
https://vjudge.net/contest/173678#problem/A
x,y分别对2016取余,如果x*y 是2016的倍数的话,那么(2016*k + x)*y也是2016的倍数。
所以只需要统计这n个数之内,对2016取余后的数所出现的次数就可以了。
分两部分统计:
1.对于1~2016*k(k>=1)的数来说,2016的每个余数都已经出现了k遍,所以每个余数的出现次数都+k;
2.对于余下不足凑成2016个数的数来说,只需要把他们%2016的余数所出现的次数+1就可以了;
最后再对两个集合进行枚举相乘,看看是否为2016的倍数就可以了。
#include<cstdio>#include<cstring>#include<iostream>#include<queue>#include<algorithm>#define ll long longusing namespace std;int a[3000],b[3000];int main(){ ll c,d; while(~scanf("%lld%lld",&c,&d)) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=0;i<2016;i++)a[i]=c/(ll)2016,b[i]=d/(ll)2016; int l1=c%2016,l2=d%2016; for(int i=1;i<=l1;i++)a[i]++; for(int i=1;i<=l2;i++)b[i]++; ll ans=0; for(int i=0;i<2016;i++) for(int j=0;j<2016;j++) if(i*j%2016==0) ans=ans+(ll)a[i]*b[j]; //这里a数组和b数组相乘会超int,这种类型的题目要用强制类型转换 //也可以对a,b数组用long long cout<<ans<<endl; } return 0;}
阅读全文
0 0
- 暴力脑洞-CSU1803
- CSU1803 2016 同余
- CSU1803——2016(思路)
- CSU1803 2016(同余)
- 2016-CSU1803(同余公式)
- csu1803——2016(数学)
- 暴力??
- 暴力
- 暴力
- 暴力
- 暴力
- 暴力
- 2016湖南省省赛A-2016(CSU1803)
- csu1803-2016 湖南省大学生第十二届程序设计竞赛
- CSU 1538 暴力暴力暴力
- CSU1803: 2016(湖南省第十二届大学生计算机程序设计竞赛A)
- hdu6152暴力暴力!!!
- 无脑简单又暴力的AJAX。get访问API
- java获取系统当前时间
- Regular polygon(2017多校联赛2。 计算几何)
- linux top详解
- [JavaWeb]Servlet验证码实现(实例代码)
- mysql 查询当天、本周,本月,上一个月的数据
- 暴力脑洞-CSU1803
- ubuntu16.04 配置CM13编译环境的几个操作
- JVM加载class文件的原理浅析
- UTF gbk 互转
- js 深入理解this指向问题
- 记录平时程序中遇到的问题
- C#多线程之所有线程执行完成后
- ViewPager无限轮播(网上加载图片)
- CSS块级标签与内联标签嵌套规则