加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

UVALive - 7098 Farey Sums

发布时间:2020-12-13 21:13:51 所属栏目:PHP教程 来源:网络整理
导读:题目: 这个题目考的就是1个对称性。 在a和b之间插入ab,在b和a之间插入ab 那末a/bb/a就变成了a/(ab)(ab)/b b/(ab)(ab)/a= a/bb/a3 增量是3,全部序列的增量是若干个3的和,这样的3的个数是n的欧拉函数的1半。 所以表达式很容易求出来,先求出前n个数的欧拉

题目:



这个题目考的就是1个对称性。

在a和b之间插入a+b,在b和a之间插入a+b

那末a/b+b/a就变成了a/(a+b)+(a+b)/b+b/(a+b)+(a+b)/a=a/b+b/a+3

增量是3,全部序列的增量是若干个3的和,这样的3的个数是n的欧拉函数的1半。

所以表达式很容易求出来,先求出前n个数的欧拉函数之和phi[n],然后答案便是(phi[n] * 3 ⑴)/ 2

代码:

#include<iostream> <stdio.h> using namespace std; int phi[10001]; void get_phi() { for (int i = 1; i <= 10000; i++)phi[i] = i; 2++) { if (phi== i)int j ; j += i)phi[j= phi/ i*(i - ); phi+= phi[i ]; } } int main{ get_phi(); int p, n; scanf("%d"&p); <= p{ scanf"%d%d"&n); printf"%d %d/2n"[n* 3 -); } return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读