10.30上午考试
Posted 岂是蓬蒿人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.30上午考试相关的知识,希望对你有一定的参考价值。
P75
竞赛时间: ????年??月??日??:??-??:??
注意事项(请务必仔细阅读)
【 问题描述】
从1 − N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数
最大可能是多少。
【输入格式】
第一行一个数字N。
【输出格式】
一行一个整数代表答案对100000007取模之后的答案。
【样例输入】
7
【样例输出】
144
【样例解释】
但是塔外面有东西。
【数据规模与约定】
对于20%的数据, 1 ≤ N ≤ 100。
对于50%的数据, 1 ≤ N ≤ 5000。
对于70%的数据, 1 ≤ N ≤ 105。
对于100%的数据, 1 ≤ N ≤ 5 × 106。
/* 对于n的阶乘质因数分解后 如果一个素数次数是奇数那么不选这个素数 否则选这个素数 这样就能保证最大并且不会出现一个数的一部分选一部分不选的情况 因为不选的一定是素数 */ #include<iostream> #include<cstdio> #include<cstring> #define LL long long #define maxn 5000010 #define mod 100000007 using namespace std; LL n,tot,ans=1; LL prime[maxn],f[maxn],a[maxn]; LL init() { LL x=0,f=1;char c=getchar(); while(c<\'0\'||c>\'9\'){if(c==\'-\')f=-1;c=getchar();} while(c>=\'0\'&&c<=\'9\'){x=x*10+c-\'0\';c=getchar();} return x*f; } void prepare() { for(int i=2;i<=n;i++) { if(!f[i])prime[++tot]=i; for(int j=1;j<=tot&&prime[j]*i<=n;j++) { f[prime[j]*i]=1; if(i%prime[j]==0)break; } } } LL pow(LL x,LL m) { if(m==0)return 1; LL he=pow(x,m/2); he=(he*he)%mod; if(m&1)he=(he*x)%mod; return he; } int main() { freopen("hao.in","r",stdin); freopen("hao.out","w",stdout); n=init(); prepare(); for(int i=1;i<=tot;i++) { LL ha=n; while(ha) { a[i]+=ha/prime[i]; ha/=prime[i]; } } for(int i=1;i<=tot;i++) ans=(ans*pow(prime[i],a[i]/2*2))%mod; cout<<ans<<endl; return 0; }
【问题描述】
有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[ 以上是关于10.30上午考试的主要内容,如果未能解决你的问题,请参考以下文章