https://vjudge.net/problem/HDU-3501

不会做啊。。。记一下做法

做法是计算小于n且与n互质的数的和;根据如果gcd(i,n)==1,那么gcd(n-i,n)==1,对这些数两两一组分组,使得每组的和为n


后面自己去想了一下,想出了一个奇怪的做法。。

化简出来小于n且与n互质的数的和是$\sum_{d|n}\mu(d)\sum_{j=1}^{{\lfloor}\frac{n-1}{d}{\rfloor}}(dj)$

于是暴力枚举因子,暴力根号n求莫比乌斯函数,得到一个O(n)做法。。。

过了。。。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define md 1000000007
#define N 100000
ll n,ans;
ll F(ll k)
{
//if(n%k!=0) return 0;
ll ed=(n-)/k;
return (k+ed*k)%md*ed%md*%md;
}
ll prime[],len;
bool nprime[];
ll gmu(ll x)
{
//if(x==1) return 1;
int i,ans=,ed=floor(sqrt(x+0.5));
bool fl;
for(i=;prime[i]<=ed;i++)
{
fl=;
//printf("a%lld %lld\n",i,x);
while(x%prime[i]==)
{
if(fl) return ;
fl=;
x/=prime[i];
ans*=(-);
}
}
if(x!=) ans*=(-);
return ans;
}
int main()
{
ll i,j;
for(i=;i<=N;i++)
{
if(!nprime[i]) prime[++len]=i;
for(j=;j<=len&&i*prime[j]<=N;j++)
{
nprime[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
//n=4;
//while(1)
//{scanf("%lld",&i);printf("%lld\n",gmu(i));}
while()
{
scanf("%lld",&n);
if(n==) break;
ll sq=sqrt(n+0.5);
if(sq*sq==n) sq--;
ans=;
for(i=;i<=sq;i++)
{
if(n%i!=) continue;
ans=(ans+gmu(i)*F(i)+md)%md;
ans=(ans+gmu(n/i)*F(n/i)+md)%md;
}
sq++;
if(sq*sq==n) ans=(ans+gmu(sq)*F(sq)+md)%md;
printf("%lld\n",(n*(n-)%md*%md-ans+md)%md);
//printf("%lld\n",ans);
}
return ;
}

最新文章

  1. CSS样式常用属性整理
  2. 利用avalon 实现一个简单的成绩单
  3. 【转】Web前端浏览器兼容初探
  4. Beta版本冲刺第二天 12.6
  5. hdu 4738 Caocao&#39;s Bridges(桥的最小权值+去重)
  6. Android 安全性和权限
  7. 【索引】Volume 0. Getting Started
  8. 【零基础学习iOS开发】【01-前言】01-开篇
  9. centos安装docker容器
  10. Emmet 快速编写html代码
  11. Python多线程案例
  12. CAP带你轻松玩转Asp.Net Core消息队列
  13. Docker进阶之八:搭建LNMP网站平台实战
  14. 【spring源码分析】IOC容器初始化(五)
  15. struts2简单入门-执行流程
  16. 详解ES5和ES6的继承
  17. 《Java编程思想第四版》附录 C Java 编程规则
  18. php手撸轻量级开发(二)框架加载
  19. oracle12C 创建PDB
  20. APP推广(预期方案)

热门文章

  1. 【特征检測】BRIEF特征点描写叙述算法
  2. Spring Batch(4): Job具体解释
  3. LeetCode(11)题解: Container With Most Water
  4. Codeforces Round #422 (Div. 2) A. I&#39;m bored with life 暴力
  5. 中断线程Interrupt()
  6. 在Java中如何编写回调函数,以及回调函数的简单应用
  7. JS/TS 的 import 和 export 用法小结
  8. linux下使用无线网卡的命令行方法(wifi,iwconfig)
  9. iOS——多线程编程详细解析
  10. Python学习笔记_Redis