http://poj.org/problem?id=3090

对于此题,观测点的数目,从小规模开始观察,可以得到每一个点,由一根无限长的绳子,绕着原点旋转,得到的第一个点。换另外一个思路,每一个观察到的点,都是子矩阵的一个边界点,也就是说枚举每一个子矩阵的点即可,而对于重合的点,则是已经出现的点,也就是可以约分的点,斜率可以看出。那么也就是欧拉函数,通过线性筛欧拉函数,然后对于每一个询问,直接计算欧拉函数和即可。因为是对称的,所以只要求一半,后面再乘2+加上k=1的那一个就可以了

 1 #include<iostream>
2 #include<stdio.h>
3 #include<cstring>
4 #include<math.h>
5 #include<algorithm>
6 using namespace std;
7 typedef long long ll;
8 const ll N=1e3+520;
9 bool vis[N];
10 ll phi[N],p[N],cnt;
11 ll n,ans,t;
12 void euler()
13 {
14 phi[1]=1;
15 for(int i=2;i<=N;i++)
16 {
17 if(!vis[i]) p[cnt++]=i,phi[i]=i-1;
18 for(int j=0;p[j]<=N/i;j++)
19 {
20 vis[p[j]*i]=1;
21 if(i%p[j]==0){phi[i*p[j]]=phi[i]*p[j];break;}
22 phi[i*p[j]]=phi[i]*(p[j]-1);
23 }
24 }
25 }
26 int main()
27 {
28 euler();
29 scanf("%lld",&t);
30 for(int i=1;i<=t;i++)
31 {
32 scanf("%lld",&n);
33 ans=0;
34 for(int j=1;j<=n;j++) ans+=phi[j];
35 printf("%d %lld %lld\n",i,n,ans*2+1);
36 }
37 return 0;
38 }

最新文章

  1. C#调用win32 api 操作其它窗口
  2. 基于注解的Spring AOP的配置和使用
  3. DOM4J的使用
  4. C++程序设计(关于函数中数组传递的一点心得)
  5. 大前端学习笔记整理【七】HTTP协议以及http与https的区别
  6. ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
  7. Sublime Text 3安装插件指南
  8. 【Python】Django 如何直接返回404 被 curl,wget 捕获到
  9. C语言命名空间
  10. How to decide on the correct number of clusters?
  11. linux下安装protobuf教程+示例(详细)
  12. @Repository @Resource
  13. 【开发工具 - Git】之Git使用案例
  14. webAppbuilder微件使用教程2 常用微件介绍
  15. Spring shiro 初次使用小结
  16. pod command
  17. day60 pymysql
  18. Java中的Cloneable接口理解
  19. 20155208徐子涵 《网络对抗》Exp1 PC平台逆向破解
  20. (转)C# 快速高效率复制对象的方式

热门文章

  1. Linux内核配置-ARP系列
  2. SQLserver 2014 如何使用Datename()函数获取对应时间
  3. 熔断和降级的初步详解实现(NET Core控制台输出讲解Polly)
  4. layout_weight属性分析
  5. [BUUCTF]PWN8——jarvisoj_level0
  6. MyBatis 3学习笔记
  7. CF1428A Box is Pull 题解
  8. Django的Form表单验证
  9. Elasticsearch 和 solr 的区别
  10. 微信公众号开发用户授权登录报&quot;redirect_uri 参数错误&quot;错误