问题描述

一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(Pefect Sqaure),也称平方数。

小A认为所有的平方数都是很perfect的~

于是他给了小B一个任务:用任意个不大于n的不同的正整数相乘得到完全平方数,并且小A希望这个平方数越大越好。

请你帮助小B告诉小A满足题意的最大的完全平方数。

输入

输入文件名为number.in

输入仅 1行,一个数n。

输出

输出文件名为number.out

输出仅1行,一个数表示答案。由于答案可以很大,所以请输出答案对100000007(注意!10^8+7)取模后的结果。

输入输出样例1

number.in 

7

number.out

144

输入输出样例解释1

144=2×3×4×6,是12的完全平方。

输入输出样例2

number.in  

9

number.out

5184

输入输出样例解释2

5184=3×4×6×8×9,是72的完全平方。

数据范围

对于20%的数据,0<n≤100;

对于50%的数据,0<n≤5,000;

对于70%的数据,0<n≤100,000;

对于100%的数据,0<n≤5,000,000。

题解

这题可以简化为在[1,n]中取任意个数,组成最大的形如ans=a^(2*Na)*b^(2*Nb)*……的数即可

很容易发现大于n/2+1的数和质数都不能选择作为底数

而在剩下的数中我们可以枚举i,在[1,n]数字中将每个数字分解为i^xi*φ的形式,记录下Σxi

易证Σxi只有为偶数时才能组成完全平方,取i^(Σxi),

当Σxi为奇数时我们取i^(Σxi-1)

所以 答案就为Σ(i^(Σxi-1))

 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std; long long n,ans;
bool zs[]; long long query(long long);
long long work(long long,long long);
int main()
{
long long i,j,sum;
scanf("%I64d",&n);
for(i=;i<=n/+;i++)
if(!zs[i]) for(j=;i*j<=n;i++) zs[i*j]=true; ans=;
for(i=;i<=n/+;i++)
{
if(!zs[i])
{
cout<<"*"<<i<<endl;
j=;
sum=query(i); cout<<sum<<endl;
if(sum%!=) sum--;
if(sum!=) j=work(i,sum); cout<<j<<endl;
if(j!=) ans=(ans*j)%;
}
}
printf("%I64d",ans);
return ; } long long query(long long v)
{
long long ans,x;
ans=;
x=n;
for(;x>;x/=v,ans+=x);
return ans;
} long long work(long long a,long long b)
{
long long ans=,x=a%;
for(;b>;b/=,x=(x*x)%) if(b%!=) ans=(ans*x)%;
return ans;
}

最新文章

  1. Java笔记:对象,方法,类
  2. SSIS 连接ORACLE 无法从 SQL 命令中提取参数的解决方案
  3. c#中浅拷贝和深拷贝的理解
  4. C#创建datatable
  5. JavaScript的几种函数的结构形式
  6. 水果姐逛水果街Ⅰ(codevs 3304)
  7. redis 几种数据类型往数据库存数据和取数据的帮助类
  8. 【原】Centos6.5下cdh4.6 hive安装部署
  9. js动态添加table 数据tr td
  10. RabbitMQ基本管理(上)
  11. 收藏清单: python测试框架最全资源汇总
  12. C语言程序设计第三次作业——选择结构(1)
  13. SQLAlchemy+Flask-RESTful使用(一)
  14. git在工作中的用法总结-使用篇
  15. 定时获取MySQL库的大小
  16. python接口自动化29-requests-html支持JavaScript渲染页面
  17. 解决Yii2中刷新网页时验证码不刷新的问题
  18. 【BZOJ4025】 二分图(线段树分治)
  19. Java中内存溢出与内存泄露
  20. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

热门文章

  1. X-editable 不能二次初始化的问题解决方案
  2. ABP 重写主键ID 多表查询ID无效
  3. mysql设置text字段为not null,并且没有默认值,插入报错:doesn&#39;t have a default value
  4. HZOJ 老司机的狂欢
  5. mysql通过TEXT字段进行关联的优化方案
  6. 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读
  7. 突然想起一个有趣的问题:FAT32&amp;NTFS?
  8. Spring AOP 的@Aspect
  9. vue filter使用方法
  10. python-字符编码数据类型转换