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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

筛法 V - 一道水题

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 筛法 V - 一道水题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一天,szb 在上學(xué)的路上遇到了灰太狼。

灰太狼:幫我們做出這道題就放了你。
szb:什么題?
灰太狼:求一個(gè)能被 [1,n] 內(nèi)所有數(shù)整除的最小數(shù)字,并對(duì) 100000007 取模。
szb:這題太水了,就讓我小弟來(lái)做好了。

然后你就光榮的接受了這個(gè)任務(wù)。

Input
一行一個(gè)數(shù) n。

Output
一行一個(gè)數(shù) ans。

Example
樣例輸入
10
樣例輸出
2520
Hint
n≤108

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<cstdio> #include<vector> #include<set> #include<cstring> #include<cstdlib> #include<time.h> #include<stack> #define INF 0x3f3f3f3f using namespace std; const int maxn=100; typedef long long ll; ll mod=1e8+7; ll num,f[maxn]; struct mat{ll m[maxn][maxn]; }ans,a;//結(jié)果矩陣 輸入矩陣 ll mode(ll a,ll b){ll sum=1;a=a%mod;while(b){if(b&1)sum=(sum*a)%mod;b/=2;a=(a*a)%mod;}return sum; }//快速冪 ll inv(ll a,ll b){return(a*mode(b,mod-2))%mod; }//逆元 ll gcd(ll a, ll b) {return b?gcd(b, a%b):a; }//a,b最大公因數(shù) ll lcm(ll x, ll y){return x / gcd(x, y)*y; }//最小公倍數(shù) ll exgcd(ll a,ll b,ll &x,ll &y){if(b==0){x=1;y=0;return a;}int r=exgcd(b,a%b,x,y);int temp=y;y=x-(a/b)*y;x=temp;return r; }// 拓展歐幾里得 ax+by=d的一組解 mat mul(mat a,mat b,int n){mat c;memset(c.m,0,sizeof(c.m));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)c.m[i][j]=(c.m[i][j]+(a.m[i][k]*b.m[k][j])%mod)%mod;return c; }//矩陣a*b 大小為n mat _power(mat a,int b,int n){memset(ans.m,0,sizeof(ans.m));for(int i=1;i<=n;i++)ans.m[i][i]=1;while(b){if(b&1)ans=mul(a,ans,n);a=mul(a,a,n);b>>=1;}return ans; }//矩陣a^bvoid init(int n){int vis[maxn];for(int i=2;i<=n;i++){if(vis[i])continue;for(int j=i*2;j<=n;j+=i)vis[j]=1;} }//埃篩素?cái)?shù) //for(int i=2;i<=n;i++) //if(!vis) cout<<i<<endl; int oula(int x)//歐拉函數(shù) {int i,j;int num = x;for(i = 2; i*i <= x; i++){if(x % i == 0){num = (num/i)*(i-1);while(x % i == 0){x = x / i;}}}if(x != 1) num = (num/x)*(x-1);return num; }//歐拉函數(shù) 小于n且與n互質(zhì)的正整數(shù)個(gè)數(shù) const int mx=1e8+5; bool vis[mx]; int z[1000000]; int main() {int n,cnt=0;scanf("%d",&n);ll ans=1;memset(vis,0,sizeof(vis));for(int i=2;i<=n;i++){if(!vis[i]){z[cnt++]=i;for(ll j=i;j<=n;j*=i)ans=ans*i%mod;}for(int j=0;j<cnt;j++){ll v=i*z[j];if(v>n)break;vis[v]=1;if(i%z[j]==0)break;}}printf("%lld\n",ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的筛法 V - 一道水题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。