BJTU 数学题
2016-04-24 21:54
483 查看
Description
懒羊羊是一只非常能吃的羊,它在青青草原上发现一块巨大的正方形草地,但灰太狼已经抢先一步在草地下布上了若干陷阱,正方形草地位于直角坐标系中,左下角坐标为(1,1),右上角坐标为(m,m),草地内只有整数坐标点上才长有青草,懒羊羊发现,对于一棵坐标为(x,y)处的青草,只有(x*y) Mod m>0时,草旁边才有一个陷阱,Mod为取余数
聪明的你是否能帮懒羊羊算一算,这块草地上共有多少陷阱。
Input
输入的第一行为一个正整数T(T<=50),表示测试数据的组数,接下来是T行测试数据,每行中有一个整数m(m<=100000)。
Output
对于每一组测试数据,输出一行"Case id: M",表示从第id组测试数据结果为,id从1开始。
Sample Input
5
1
3
4
6
1403
Sample Output
Case 1: 0
Case 2: 4
Case 3: 8
Case 4: 21
Case 5: 1962964
解法:for两次过去超时不用想,既然x*y%m==0,那么就是x*y=k*m,所以两边同时除以gcd(x,m),那么只要再找到含有m/gcd(x,m)因子的y,就可以了,最后算出一列中有多少个y的倍数即可。
懒羊羊是一只非常能吃的羊,它在青青草原上发现一块巨大的正方形草地,但灰太狼已经抢先一步在草地下布上了若干陷阱,正方形草地位于直角坐标系中,左下角坐标为(1,1),右上角坐标为(m,m),草地内只有整数坐标点上才长有青草,懒羊羊发现,对于一棵坐标为(x,y)处的青草,只有(x*y) Mod m>0时,草旁边才有一个陷阱,Mod为取余数
聪明的你是否能帮懒羊羊算一算,这块草地上共有多少陷阱。
Input
输入的第一行为一个正整数T(T<=50),表示测试数据的组数,接下来是T行测试数据,每行中有一个整数m(m<=100000)。
Output
对于每一组测试数据,输出一行"Case id: M",表示从第id组测试数据结果为,id从1开始。
Sample Input
5
1
3
4
6
1403
Sample Output
Case 1: 0
Case 2: 4
Case 3: 8
Case 4: 21
Case 5: 1962964
解法:for两次过去超时不用想,既然x*y%m==0,那么就是x*y=k*m,所以两边同时除以gcd(x,m),那么只要再找到含有m/gcd(x,m)因子的y,就可以了,最后算出一列中有多少个y的倍数即可。
#include<iostream> #include<algorithm> using namespace std; typedef long long ll; int main(){ ll t,n,i,j,sum,cas=1; cin>>t; while(t--){ cin>>n; sum=0; for(i=1;i<=n;i++){ ll f=__gcd(n,i); f=n/f; sum+=n/f; } cout<<"Case "<<cas++<<": "<<n*n-sum<<endl; } return 0; }
相关文章推荐
- 数值算法
- UVA_10020_Minimal coverage
- 优雅的创建一个相册管理类(兼容AssetsLibrary和PhotoKit)
- Java多线程干货系列—(一)Java多线程基础
- 站立会议第七天
- win10自带中文输入法的用户体验
- 站立会议个人博客6(2016/4/24)
- 百度移动SSP启动广告
- Linux NAPI/非NAPI 网卡驱动部分
- JAVA——包(package)及对jar包的操作
- MySql-使用事件调度器(event_scheduler)
- NJUST 1922
- bzoj 3262: 陌上花开 【cdq分治】
- 数据结构 实验三 树与二叉树的常见操作
- Razor视图中的 @helper
- 【朝花夕拾】虚拟主机克隆不能上网问题总结
- usaco回文平方数
- 20145218 《Java程序设计》第03次实验报告
- Xcache加速php缓存笔记
- 开发案例2——可以保存照片的相机