他の人のコードや解説を見ても何がだめかわからなかったので、教えてもらえるとうれしいです。解説に書いてあることと同じものを実装しているつもりなのですが、うまく行きませんでした。
問題
問題は以下のURLを参照お願いします。
https://atcoder.jp/contests/abc169/tasks/abc169_d
自分のコード
c++
1#include<iostream> 2#include<iomanip> 3#include<algorithm> 4#include<string> 5#include<map> 6#include<cmath> 7#include<iomanip> 8#include<math.h> 9#include<vector> 10#define rep(i, n) for(int i=0; i<n; i++) 11using namespace std; 12typedef long long ll; 13 14int main(){ 15 ll n; cin >> n; 16 vector<int> p; 17 ll ans = 0; 18 ll limit = 1000001; 19 // int(sqrt(n))+1; 20 int sosu[limit]; 21 22 rep(i, limit) sosu[i]=1; 23 24 // sosu[i] = 1 if i in prime_number else 0 25 for(int i=2;i<limit;i++){ 26 ll j=i*2; 27 while(j<limit){ 28 sosu[j]=0; 29 j += i ; 30 } 31 } 32 33 // prime factorization 34 for(int i=2; i<limit; i++){ 35 if(sosu[i]==0) continue; 36 if(n%i == 0){ 37 ll e = 0; 38 ll tmp = n; 39 while(tmp%i == 0){ 40 e++; 41 tmp /= i; 42 } 43 // cout << "i=" << i <<" ee=" << ee << endl; 44 p.push_back(e); 45 } 46 } 47 48 // if n in prime_number 49 if(p.empty()){ 50 if(n==1) cout << 0 << endl; 51 else cout << 1 << endl; 52 return 0; 53 } 54 55 // get answer 56 for(auto i : p){ 57 ll count = 0; 58 while(count < i){ 59 count++; 60 i -= count; 61 } 62 ans += count; 63 } 64 cout << ans << endl; 65}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 12:59