PE 565
来源:互联网 发布:女鬼桂缘捏脸数据 编辑:程序博客网 时间:2024/04/29 11:27
Ans:2992480851924313898
注意到
15s左右,我也不知道复杂度。
#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll n = 1e11, k = 2017;bool B[50000010], B2[5000010];struct node{ ll x, y; node() {} node(ll _, ll __) {x = _, y = __;} bool operator < (const node& X) const {return x < X.x;}} L[50000010];ll t = 0, ans = 0;void exgcd(ll a, ll& x, ll b, ll& y){ if(!b) x = 1, y = 0; else exgcd(b, y, a % b, x), y -= a / b * x;}ll calc(ll a){ ll x, y; exgcd(k, x, a, y); return (x % a + a) % a;}ll calc2(ll a) {return (a + n / a * a) * (n / a);}ll S(ll a) {return a * (a + 1) / 2;}int main(){ ll tmp1 = n / k, tmp2 = sqrt(n); for(int i = 2; i <= tmp2; i++) { if(!B2[i]) for(int j = i + i; j <= tmp2; j += i) B2[j] = 1; if(i % k) for(int j = calc(i); j <= tmp1; j += i) if(j * k != i + 1) B[j] = 1; } for(int i = 1; i <= tmp1; i++) if(!B[i]) L[++t] = node(k * i - 1, k * i - 1); for(ll i = 2; i <= tmp2; i++) if(!B2[i] && i % k != k - 1) for(ll j = i * i, s = 1 + i; j <= n; j *= i) if((s += j) % k == 0) L[++t] = node(j, i); printf("%lld\n", t); sort(L + 1, L + t + 1); for(int i = 1; i <= t; i++) ans += L[i].x * S(n / L[i].x); for(int i = 1; i <= t; i++) if(L[i].x * L[i].y <= n) ans -= L[i].x * L[i].y * S(n / L[i].x / L[i].y); for(int i = 1; i <= t; i++) for(int j = i + 1; j <= t; j++) if(L[i].x > n / L[j].x) break; else ans -= L[i].x * L[j].x * S(n / L[i].x / L[j].x); printf("%lld\n", ans); return 0;}
0 0
- PE 565
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- PE文件-PE文件格式
- PE和动态PE
- PE文件格式
- PE文件格式
- PE学习
- checkbox实现
- ubuntu indicator-multiload 配置
- C# 身份证号码验证正则和验证函数
- android语音合成Demo
- JSP 自我学习笔记2
- PE 565
- SSH框架搭建整合
- Canvas之Path
- 7.shell初步编程学习
- jquery如何获得选择器结果集中某个元素的索引
- HTTP 常用状态码
- HTML部分基本知识提炼
- 用ProxyFactoryBean创建AOP代理
- Android中对Log日志文件的分析