cf 1062d 思维 欧拉筛变形
生活随笔
收集整理的這篇文章主要介紹了
cf 1062d 思维 欧拉筛变形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://codeforces.com/contest/1062/problem/D
題意:給個n ,在n之內 所有(a,b) ,如果存在唯一的x 使a*|x| == b 或者 b* |x| == a? ?(a,b>2)那么ans + |x| 求最后結果
思路:如果a%b==0那么肯定是唯一的x了,枚舉(a,b)加上他們的商就好了
枚舉的(a,b)的時候 ,用歐拉篩的思想,第二重用a的倍數來枚舉...
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define all(v) v.begin(),v.end()const int N = 1e4+4; const int INF = 1E9+4; const ll mod = 1e9+7;int n,m; int a[N],b[N]; vector<int>p; vector<int>V[1000004];int main(){ios::sync_with_stdio(false);cin.tie(0);cin>>n;ll ans = 0;for(int i=2;i<=n;++i){for(int j = i+i;j<=n;j+=i){ans += j/i;}}cout<<ans*4<<endl;return 0; }?
轉載于:https://www.cnblogs.com/wjhstudy/p/9986106.html
總結
以上是生活随笔為你收集整理的cf 1062d 思维 欧拉筛变形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计——学术交流管理系统的设计与实现
- 下一篇: 二 Array 数组常用操作方法