日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新手赛(2) 第五题 因素和问题

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新手赛(2) 第五题 因素和问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem E

Time Limit : 2000/1000ms (Java/Other)???Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 31???Accepted Submission(s) : 6

Font:?Times New Roman?|?Verdana?|?Georgia

Font Size:?←?→

Problem Description

七夕節那天,月老來到數字王國,他在城門上貼了一張告示,并且和數字王國的人們說:"你們想知道你們的另一半是誰嗎?那就按照告示上的方法去找吧!"
人們紛紛來到告示前,都想知道誰才是自己的另一半.告示如下:



數字N的因子就是所有比N小又能被N整除的所有正整數,如12的因子有1,2,3,4,6.
你的緣分如何呢?

Input

輸入數據的第一行是一個數字T(1<=T<=500000),它表示測試數據的組數.然后是T組測試數據,每組測試數據只有一個數字N(1<=N<=500000).

Output

對于每組的測試數據N,可計算得到N的因子和M,假設M的因子和是K,則:
如果N==M 或者 M不在[1,500000]的范圍之內,則請輸出“注定單身”,
否則,如果 N==K,則請輸出“緣分已定”;
其他情況,則請輸出“緣分未到”;

Sample Input

3 6 7 220

Sample Output

注定單身 緣分未到 緣分已定
Statistic?|?Submit?|?Back 這個題很容易讓人直接用sqrt(N)*sqrt(M)*T的算法去試一試 極限情況N*M相等 復雜度大概在250000000000 顯然超時 但是這是極限情況 加上OJ可能數據弱 ?也試著提交了一下 結果TLE? 然后試了各種減枝 發現于事無補 應該考慮新算法了
此時知道了一個叫約數和的公式 f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak) 打了個素數表依舊超 求素數個數 再用公式依舊超 復雜度難以計算 所以 只有寫完提交試試? 結果依舊TLE這個待思考原因

后面講一下周神的方法 一種類篩選法 直接枚舉約數 然后枚舉有這約數的數即i*j 去加上這個約數 這樣就預處理得到了500000以內所有因數和 復雜度等于(500000/2+500000/3+....)=500000(1/2+1/3+1/4.....1/500000) 學長告訴我當作logN就好了 ?查了一下百度似乎是lnN+C (C為0.57721566490153286060651209 所以還是能完美過的
貼貼代碼: #include<stdio.h> #define MAXN 500001 int ANS[500001]; int main() {int i,j;for(i=1;i<=MAXN;i++){for(j=2;j*i<=MAXN;j++){ANS[j*i]+=i;}}int T,N,M,K;while(scanf("%d",&T)!=EOF){while(T--){scanf("%d",&N);M=ANS[N];if(N==M||M>500000||M==0) printf("注定單身\n");else{K=ANS[M];if(N==K) printf("緣分已定\n");else printf("緣分未到\n");} }}return 0; }

轉載于:https://www.cnblogs.com/zy691357966/p/5480476.html

總結

以上是生活随笔為你收集整理的新手赛(2) 第五题 因素和问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。