国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

完全平方數

2019-11-14 12:43:48
字體:
來源:轉載
供稿:網友

題目描述:

一個數如果是另一個整數的完全平方,那么我們就稱這個數為完全平方數(Pefect Sqaure),也稱平方數。小A認為所有的平方數都是很perfect的~于是他給了小B一個任務:用任意個不大于n的不同的正整數相乘得到完全平方數,并且小A希望這個平方數越大越好。請你幫助小B告訴小A滿足題意的最大的完全平方數。

輸入格式:

輸入文件名為number.in輸入僅 1行,一個數n。

輸出格式:

輸出文件名為number.out輸出僅1行,一個數表示答案。由于答案可以很大,所以請輸出答案對100000007

樣例輸入:

樣例17樣例29

樣例輸出:

樣例1144樣例25184

數據范圍:

對于20%的數據,0<n≤100;對于50%的數據,0<n≤5,000;對于70%的數據,0<n≤100,000;對于100%的數據,0<n≤5,000,000。

時間限制:

1S

空間限制:

128M

提示:

【輸入輸出樣例解釋1】144=2×3×4×6,是12的完全平方?!据斎胼敵鰳永忉?】5184=3×4×6×8×9,是72的完全平方。

 

 

 

 

 

 

 

 

 

先上代碼。

#include<bits/stdc++.h>using namespace std;const int mod=100000007;int a[5000001],n,s;long long PRime[50000001],m;bool pg[5000001];void init(){cin>>n;}void prepare(){pg[1]=1;pg[2]=0;for(int i=2;i<=n/2+1;i++){if(!pg[i]){prime[++s]=1;a[s]=0;for(int j=1;j*i<=n;j++){int ll=j;a[s]++;while (ll%i==0){a[s]++;ll/=i;}pg[j*i]=1;}if (a[s]%2==1) a[s]--;// cout<<i<<" "<<a[s]<<"/n";for(int j=1;j<=a[s];j++){prime[s]*=i;if(prime[s]>20000) prime[s]=prime[s]%mod;}}}}void doit(){m=1;for(int i=1;i<=s;i++){m*=prime[i];if(m>10000){m=m%mod;}}}void print(){cout<<m;}int main(){init();prepare();doit();print();}

解析:本題比較好想,方法:將n!分解質因數后將奇數的質因子個數減一,再將所有質因子乘起來取余即可。

優化:

1、篩素數時,搜到一半就可以停了,后面的質數不可能因子數超過一個。

2、快速冪(這里沒加),多乘幾次再取模。

證明:

      奇個數的的質因數一定可去,且留著也沒用。


上一篇:IO流

下一篇:使用記事本編寫java程序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延长县| 巨鹿县| 舞钢市| 陕西省| 抚顺县| 福安市| 闸北区| 崇明县| 远安县| 麦盖提县| 盐池县| 余庆县| 商洛市| 二连浩特市| 南宫市| 罗源县| 大同市| 特克斯县| 惠州市| 吉首市| 柞水县| 玉田县| 玉门市| 开封县| 建始县| 乐陵市| 平凉市| 阜新市| 郴州市| 江口县| 山阴县| 西丰县| 勐海县| 洛川县| 江源县| 永寿县| 巴林左旗| 嘉定区| 浪卡子县| 崇文区| 凌源市|