結果
問題 | No.1737 One to N |
ユーザー | Mat_h |
提出日時 | 2021-11-12 22:20:56 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 6,080 bytes |
コンパイル時間 | 2,023 ms |
コンパイル使用メモリ | 186,616 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-05-04 09:21:05 |
合計ジャッジ時間 | 2,820 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,812 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,812 KB |
testcase_03 | AC | 2 ms
6,944 KB |
testcase_04 | AC | 2 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 1 ms
6,940 KB |
testcase_08 | AC | 2 ms
6,944 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 1 ms
6,940 KB |
testcase_11 | AC | 1 ms
6,944 KB |
testcase_12 | AC | 2 ms
6,940 KB |
testcase_13 | AC | 2 ms
6,944 KB |
testcase_14 | AC | 2 ms
6,944 KB |
testcase_15 | AC | 1 ms
6,940 KB |
testcase_16 | AC | 2 ms
6,940 KB |
testcase_17 | AC | 2 ms
6,944 KB |
testcase_18 | AC | 2 ms
6,944 KB |
testcase_19 | AC | 2 ms
6,944 KB |
testcase_20 | AC | 3 ms
6,944 KB |
testcase_21 | AC | 2 ms
6,940 KB |
testcase_22 | AC | 1 ms
6,940 KB |
testcase_23 | AC | 2 ms
6,944 KB |
testcase_24 | AC | 1 ms
6,940 KB |
testcase_25 | AC | 2 ms
6,940 KB |
testcase_26 | AC | 1 ms
6,944 KB |
testcase_27 | AC | 2 ms
6,940 KB |
testcase_28 | AC | 2 ms
6,944 KB |
testcase_29 | AC | 2 ms
6,940 KB |
ソースコード
#include<bits/stdc++.h> const int MAX = 510000; const int MOD = 1e9+7; const double PI = 3.14159265358979323846264338327950288; long long fac[MAX], finv[MAX], inv[MAX]; #define _GLIBCXX_DEBUG #define int long long #define _yes {cout<<"yes"<<endl;} #define _no {cout<<"no"<<endl;} #define _Yes {cout<<"Yes"<<endl;} #define _No {cout<<"No"<<endl;} #define _YES {cout<<"YES"<<endl;} #define _NO {cout<<"NO"<<endl;} #define _ans {cout<<ans<<endl;} #define _count {cout<<count<<endl;} #define rep(i,n) for(int i=0;i<n;i++) #define rep1(i,n) for(int i=1;i<=n;i++) #define ALL(obj) (obj).begin(), (obj).end() #define rALL(obj) (obj).rbegin(), (obj).rend() using namespace std; using ll = long long; using vc = vector<char>; using vd = vector<double>; using vi = vector<int>; using vs = vector<string>; using si = set<int>; using qi = queue<int>; using vvc = vector<vc>; using vvd = vector<vd>; using vvi = vector<vi>; using vvs = vector<vs>; using vvvi = vector<vector<vector<int>>>; using pii = pair<int, int>; using psi = pair<string, int>; using pis = pair<int, string>; using pic = pair<int, char>; using pdd = pair<double, double>; using pds = pair<double, string>; using psd = pair<string, double>; using vpii = vector<pii>; using vpic = vector<pic>; using vpsi = vector<psi>; using vpis = vector<pis>; using vpdd = vector<pdd>; using vpds = vector<pds>; using vpsd = vector<psd>; using tiii = tuple<int, int, int>; using tsii = tuple<string, int, int>; using tiis = tuple<int, int, string>; using vtiii = vector<tiii>; using mii = map<int, int>; using Graph=vvi; int FACT(ll n){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base*=i;}return base;}}//n! int FACTmod(ll n, int mod){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base=base*i%mod;}return base;}}//n!%mod vi DIVISOR(int n){ vi v; for (int i=1;i*i<=n;i++){ if(n%i==0) {v.push_back(i); if(i*i!=n)v.push_back(n/i);} } sort(ALL(v)); return v;} // 整数nの約数の昇順配列を出力 bool is_prime(long long N) { if (N == 1) return false; for (long long i = 2; i * i <= N; ++i) { if (N % i == 0) return false; } return true; } //素数判定 vi VEC_PRIME(int n) { // エラトステネスのふるい vi v; bitset<1000000> is_prime(0); // 十分大きなサイズを確保します for (int i = 2; i <= n; ++i) is_prime.set(i); // とりあえず全部ふるいに入れます for (int i = 2; i <= n; ++i) { if (is_prime[i]) { // 素数 i を発見したら for (int j = i * 2; j <= n; j += i) { is_prime.reset(j); // i の倍数をふるい落とす } } } // 結果出力 for (int i = 2; i <= n; ++i) { if (is_prime[i]) v.push_back(i); } return v; } void NCRinit(){fac[0]=fac[1]=1;finv[0]=finv[1]=1;inv[1]=1;for(int i=2; i<MAX; i++){fac[i]=fac[i-1]*i%MOD;inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;finv[i]=finv[i-1]*inv[i]%MOD;}}//二項係数前処理 long long NCR(int n,int k){if(n<k)return 0;if(n<0 || k<0){return 0;}return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD;}// 二項係数計算/mod long long POW(ll x, ll n) {ll ret = 1;while (n>0){if(n&1)ret*=x;x*=x;n>>=1;}return ret;}//x^n long long POWmod(int x,int n, int mod) {long long ret=1;while(n>0) {if(n&1)ret=ret*x%mod;x=x*x%mod;n>>=1;}return ret;}//x^n%mod ll GCD(ll x, ll y) {while(y>0){ll r=x%y;x=y;y=r;}return x;}//gcd ll LCM(ll x, ll y){return (x/GCD(x,y))*y;}//lcm int mNCR(int n,int r){ if(n<r){return 0;} else if(r==0){return 1;} else{int x=1,ans=1; for(int i=n;i>n-r;i--){ ans=ans*i/x; x++; } return ans; } }//n.r小さいときのnCr vector<pair<long long, long long> > prime_factorize(long long N) { vector<pair<long long, long long> > res; for (long long a = 2; a * a <= N; ++a) { if (N % a != 0) continue; long long ex = 0; while (N % a == 0) { ++ex; N /= a; } res.push_back({a, ex}); } if (N != 1) res.push_back({N, 1}); return res; } //素因数分解 int MINVEC(vi v){ int min=2147483647; int ans=0; int n=v.size(); rep(i,n){ if(v[i]<=min){min=v[i];ans=i;} } return ans; } //viの最小項の番号を返す;//最大番号優先 int MAXVEC(vi v){ int max=-2147483648; int ans=0; int n=v.size(); rep(i,n){ if(v[i]>=max){max=v[i];ans=i;} } return ans; } //viの最大項の番号を返す;//最大番号優先 // aよりもbが大きいならばaをbで更新する // (更新されたならばtrueを返す) template <typename T> bool chmax(T &a, const T& b) { if (a < b) { a = b; // aをbで更新 return true; } return false; } // aよりもbが小さいならばaをbで更新する // (更新されたならばtrueを返す) template <typename T> bool chmin(T &a, const T& b) { if (a > b) { a = b; // aをbで更新 return true; } return false; } int MASSVEC(vi v, int x, int y){ int ans=0; for(int i=x;i<=y;i++){ ans+=v[i]; } return ans; } //ベクトルのx番目からy番目までの総和 vector<pair<int, int>> SECONDSORT(vector<pair<int,int>> v){ int n=v.size(); rep(i,n){swap(v[i].first,v[i].second);} sort(ALL(v)); rep(i,n){swap(v[i].first,v[i].second);} return v; } //vpiiをsecond優先で昇順ソート vector<pair<int, int>> SECONDrSORT(vector<pair<int,int>> v){ int n=v.size(); rep(i,n){swap(v[i].first,v[i].second);} sort(rALL(v)); rep(i,n){swap(v[i].first,v[i].second);} return v; } //vpiiをsecond優先で降順ソート int BINARY(int bina){ int ans = 0; for (int i = 0; bina>0 ; i++) { ans = ans+(bina%2)*POW(10,i); bina = bina/2; } return ans; } //10進数を2進数に変換 //ABCDEFGHIJKLMNOPQRSTUVWXYZ //abcdefghijklmnopqrstuvwxyz signed main(void){ int n; cin>>n; vpii v=prime_factorize(n); int mass=0; rep(i,(int)(v.size())){ mass+=v[i].first*v[i].second; } cout<<mass<<endl; }