#include <iostream> #include <vector> #include <cmath> #include <cstdio> #include <cstring> #include <sstream> using namespace std; const int N = 32767; bool sieve[N]; int prime_time[N][2]; void eratosthenes() { // 0 和 1 是質數 sieve[0] = true; sieve[1] = true; int sqrt_value = sqrt(N); // 找下一個未被刪掉的數字 for (int i = 2; i <= sqrt_value; i++) if (!sieve[i]) { // k是倍數,j是質數i的倍數。 // 由大到小判斷,當sieve[k]成立時, // k才能涵蓋所有「大於等於i的質數,其倍數」倍。 for (int k = (N - 1) / i, j = i * k; k >= i; k--, j -= i) if (!sieve[k]) sieve[j] = true; // 運用小範圍的sieve[k],避免存取大範圍的sieve[j], // 大幅減少cache miss。 } } int main(int argc, char** argv){ int a,b,total; eratosthenes(); // 製作質數表 vector<int> prime; for (int i = 1; i < N; i++) { if (!sieve[i]) prime.push_back(i); } string s; while(1){ getline(cin,s); total=1; // check the first number // if the first number is 0, get break; if(s[0] == '0') { break; } stringstream ss; ss.str(s); while(ss >> a >> b){ //printf("DEBUG: A=%d, B=%d\n",a,b); for(int i=0;i<b;i++){ total*=a; } } total -= 1; //printf("DEBUG:total:%d\n",total); int hit=0; bool first=true; // 從最大的質數開始找 int index = prime.size()-1; //printf("DEBUG: index initial: %d\n",index); while(total < prime[index] && index >= 1) {index--;} //printf("DEBUG2: index initial: %d\n",index); while(index >= 0){ if(total % prime[index] == 0){ // if hit, add the hits total /= prime[index]; if(hit == 0) { if(first){ first=false; }else{ cout << " "; } cout << prime[index]; } hit += 1; }else{ index--; if(hit > 0){ cout << " " << hit; hit=0; } } } cout<<"\n"; } }
SyntaxHighlighter
2013-10-01
UVa 516 Solution
登録:
コメントの投稿 (Atom)
人気の投稿
-
指令/英文 翻譯1 翻譯2 2D Solid 二維實體 2D 實面 2D Wireframe 二維線框 3D Array 三維陣列 3D 陣列 3D Dynamic View 三維動態觀察 3D 動態檢視 3d objects 三維物體 3D 物件 3D Orbit...
-
ノート程度: 線の太さを画面に反映させる Win: ツール>オプション でオプションウィンドを開き 作図スタイル>アクティブな作図スタイル>線のフォント で [ グラフィック領域で太さを表示]にチェックを入れる。 Mac: System Menu → 設定 /...
-
☆日本一 子煩悩な県 問題: 1.休日はたいてい子どもと遊ぶ 2.配偶者より子どもが大事である 3.外食するときは、まず子どもに何を食べたいか聞く 4.携帯の待ち受けは子どもの写真だ 5.子どもの寝顔を見て感動のあまり泣いたことがある ランキング 1.熊本県 2.北海道 3.山...
-
日本で結婚するときに、台湾の戸籍謄本の訳本が要る。 検索したら、いろいろ有用な先人たちの情報があります。 I♥TAIWAN - 日本小雪さんのブログ、最初ここからスタートして多分いちばん間違いなし。 在日台灣太太連絡簿 - 最低限の必要単語が載っている。 梅と桜 ...
-
這東西搞了兩個多禮拜,終於讓我找到合理的計算方式。 真圓度的計算方法,若使用半徑法,目前有 4種方式(參考Wikipedia(en)資料) 去取假想圓中心。 1. 最小區域圓法 Minimum Zone circle (MZC) 這是ISO及JIS B0621有規定的正式...
-
AutoCADではボタンで1クリック切り替えですけどね DraftSightではややめんどくさい 印刷シート(シートタブ)内で、全空間(モデルタブ)の特定の場所だけ出力させたい時に、ペーパー空間(シート ワークスペース)よりモデル空間(モデル ワークスペース)へ切り替える必...
-
第一關,...沒啥好寫的簡單 右鍵找出網頁原始碼之後就會看到密碼了 h4x0r ...NEXT
-
x64環境のSDKを使ってコンパイルするときに、GWL_WNDPROCなどシステムの定数が使えないことになります。 それは、SDKでは、x64環境であれば(#ifdef _win64)、それらの変数の定義をキャンセルした(undef)のです。 解決法として、GWL_WNDPROC...
-
大多數人使用iReport生成都會使用SQL來抓取資料庫檔案,但是iReport畢竟只是個設計表單用的程式,資料還是要靠Java餵給他。 一般的使用法,就像我以前做的 1. 在iReport中寫死SQL查詢句( SELECT xxx FROM yyy WHERE zzz )...
-
Access 2010の環境で開発する際、新しいファイル(ACCDB)は古いAccessでは使えないため、旧形式のMDBファイルに変換する必要性がある。 但し、変換されたファイルに、VBAコードはうまく変換できない/VBAコードが削除されることが多々ある。 故に、次のステッ...
0 件のコメント:
コメントを投稿