上海大学oj 膜一下将带给你好运(欧拉函数变形)
2017-07-13 14:18
162 查看
膜一下将带给你好运
发布时间: 2017年7月9日 20:20 最后更新: 2017年7月10日 21:12 时间限制: 1000ms 内存限制: 128M
描述
欧拉函数ϕ(n)被定义1~n中与n互质的数的个数。例如ϕ(5)=4,因为1,2,3,4这四个数字与5互质。
定义f函数:
f(n)=∑i=233n−233ϕ(i)∗[n/i]
其中[n/i]表示n除以i所得到的商
输入
第一行一个整数T,表示测试组数。对于每组数据,输入一行,包含一个数字n,466<=n<=108
输出
每组数据输出一行,表示函数值f(n)对1000000007取模
样例输入1 复制
2
1068
972
样例输出1
293824
222698
分析:有两种方法;
1.推公式,有Σ(i:1-n)Φ(n)(n/i) = n(n+1)/2,前后233可以欧拉公式暴力去除;
2.直接枚举n/i,不超过sqrt(n)个,求一下欧拉函数前缀
发布时间: 2017年7月9日 20:20 最后更新: 2017年7月10日 21:12 时间限制: 1000ms 内存限制: 128M
描述
欧拉函数ϕ(n)被定义1~n中与n互质的数的个数。例如ϕ(5)=4,因为1,2,3,4这四个数字与5互质。
定义f函数:
f(n)=∑i=233n−233ϕ(i)∗[n/i]
其中[n/i]表示n除以i所得到的商
输入
第一行一个整数T,表示测试组数。对于每组数据,输入一行,包含一个数字n,466<=n<=108
输出
每组数据输出一行,表示函数值f(n)对1000000007取模
样例输入1 复制
2
1068
972
样例输出1
293824
222698
分析:有两种方法;
1.推公式,有Σ(i:1-n)Φ(n)(n/i) = n(n+1)/2,前后233可以欧拉公式暴力去除;
2.直接枚举n/i,不超过sqrt(n)个,求一下欧拉函数前缀
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1e9+7; ll eular(ll n)//求n的欧拉函数 { int i; int eu = n;//欧拉函数 for(i = 2; i <= sqrt(n); i++) { if(n % i == 0)//质因子 { eu = eu / i* (i-1); while(n % i == 0) n /= i;//避免再次累加 } } if(n > 1) eu = eu / n* (n-1);//本身就是 质数 return eu; } int main() { int t; scanf("%d",&t); while(t--) { ll n; scanf("%lld",&n); ll ans=n*(n+1)/2%mod; for(int i=1;i<=232;i++) { ans=(ans-eular(i)*(n/i)+mod)%mod; } for(int i=n;i>=n-232;i--) { ans=(ans-eular(i)*(n/i)+mod)%mod; } cout<<ans<<endl; } }
相关文章推荐
- 解题报告:J.膜一下将带给你好运(欧拉函数) “盛大游戏杯”第15届上海大学程序设计联赛夏季赛
- SHU-“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛-J-膜一下将带给你好运
- 【欧拉函数】膜一下将带给你好运
- shu 419 膜一下将带给你好运
- HDU-OJ 杭电1181 变形课——string写法
- 哈理工OJ2252 世界 (完全背包变形)
- 华为oj 初级 iNOC产品部-杨辉三角的变形
- poj 1142 Smith Numbers(数论:欧拉函数变形)
- 【“盛大游戏杯”第15届上海大学程序设计联赛 J】【欧拉函数 约数欧拉函数之和为本身】
- 2480 Longge's problem 欧拉函数变形 求,∑gcd(i, N)
- 提交OJ时先预防一下低级错误
- 华为oj----iNOC产品部-杨辉三角的变形 .
- 【华为 OJ 】杨辉三角的变形
- 华为OJ(杨辉三角变形)
- 华为oj_iNOC产品部-杨辉三角的变形
- 杭电OJ题 1181 变形课 解题报告
- 【Ligth-oj】-1370 - Bi-shoe and Phi-shoe(欧拉函数+素数打表)
- 哈理工OJ 1151 追求(斐波那契变形【思维题目】)
- ZZUOJ-1222- 属于ACMer的游戏 猜素数 (某月赛,总结一下素数筛选法)
- 九度OJ 1462 动态规划变形之《两船载物问题》