whata搞人心态高精度好题\xcancel{what a 搞人心态}高精度好题whata搞人心态高精度好题

Description

__int64 ago,there’s a heaven cow called sjy…
A god bull named wzc fell in love with her…
As an OI & MOer,wzc gave sjy a quesiton…

给定一个整数n,求一个整数m,满足m<=n,并且m/phi(m)的值最大。
注:phi(m)代表m的欧拉函数,即不大于m且与m互质的数的个数。

Input

第一行是一个整数T,表示该测试点有T组数据。
接下来T行,每行一个整数n,意义如上所述。

Output

输出一共T行,每行一个整数m。
若对于某个n,有不止一个满足条件的m,则输出最小的m。

Sample Input

1

10

Sample Output

6

Data Constraint

对于10%的数据, n<=1000
对于30%的数据, n<=10^10
对于60%的数据, n<=10^2000
对于100%的数据,T<=100,n<=10^25000。

Analyse

没什么好分析的,随便打个表,发现最大值是1→2→6→30→210→2310→30030→510510→9699690⋯1\to2\to 6\to30\to210\to2310\to30030\to510510\to9699690\cdots1→2→6→30→210→2310→30030→510510→9699690⋯(老子都能背出来了)

你也许可以和机智的我一样,尝试质因数分解;但是你绝对不能像*这就是祖安人打招呼的方式*的我一样,把231023102310抄成213021302130,最后看不出规律只得求助oeis。

于是规律就是质数的累乘,2×3×5×7×11×13×17×19×⋯2\times3\times5\times7\times11\times13\times17\times19\times\cdots2×3×5×7×11×13×17×19×⋯。

然后就是高精度的事情了。

首先你需要把素数表筛出来,然后直接乘起来。
T掉了!
我想想……
首先你需要把素数表筛出来,然后把所有数打表打出来,然后upper_bound-1。
A掉了!
很简单是吧?

压了十位才过,呀嘞呀嘞daze。

Code

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;typedef long long ll;
const ll D=1e10;
const int MAXN=62030,MANA=60000,MAXL=25500,Z=10;char s[25500];
bool vis[MAXN];
int T,cnt,pos,pri[MAXN];struct NM$L
{int len; ll arr[MAXL/Z];inline void times(int x){for(int i=1;i<=len;i++) arr[i]*=x;for(int i=1;i<=len;i++) arr[i+1]+=arr[i]/D,arr[i]%=D;while(arr[len+1]) len++,arr[len+1]+=arr[len]/D,arr[len]%=D; }inline void clear(){for(int i=1;i<=len;i++) arr[i]=0; len=0;}inline bool operator < (const NM$L &s) const{if(len!=s.len) return len<s.len;for(int i=len;i>=1;i--)if(arr[i]!=s.arr[i]) return arr[i]<s.arr[i];return 0;}inline bool operator <= (const NM$L &s) const{return !(s<*this);}inline void in(){scanf("%s",s+1),len=1;int l=strlen(s+1);for(int i=l;i>=1;i-=Z,len++)for(int j=min(Z,i);j>=1;j--)arr[len]=arr[len]*10+s[i-j+1]-'0';len--;}inline void out(){printf("%lld",arr[len]);for(int i=len-1;i>=1;i--) printf("%010lld",arr[i]); puts("");}
}n,las,ans[6000];void shai()
{for(int i=2;i<=MANA;i++){if(!vis[i]) pri[++cnt]=i;for(int j=1;j<=cnt && i*pri[j]<=MANA;j++){vis[i*pri[j]]=1;if(i%pri[j]==0) break;}}ans[0].arr[ans[0].len=1]=1;for(int i=1;i<=cnt;i++) {ans[i]=ans[i-1],ans[i].times(pri[i]);if(ans[i].len>2500) {cnt=i; break;}}
}int main()
{shai();scanf("%d",&T);while(T--) n.clear(),n.in(),las=ans[upper_bound(ans,ans+cnt+1,n)-ans-1],las.out();
}

【原创】高精度好题 Heaven Cow与God Bull相关推荐

  1. 国王游戏——高精度好题

    题目描述 恰逢 H H国国庆,国王邀请 nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队 ...

  2. 【第二届】无锡太湖学院ICPC校队对抗赛原创 IOI D题题解

    题目描述 圣诞节快到了,哈尔维亚的一群强盗(数量为m)正在策划着抢劫圣诞老人的礼物,由于圣诞老人会操纵魔法来抵御,强盗们在抢劫的过程中会耗费生命力,第 i 个强盗有 ai 点生命力,圣诞老人一共带着 ...

  3. 高精度乘法(正负数皆可(Bull Math)POJ)

    描述 高精度乘法 输入:两行,每行表示一个非负整数(不超过10000位) 输出:两数的乘积. 样例1 样例输入1 99 101 样例输出1 9999 #include<iostream> ...

  4. 【数论】基础数论概念

    基础数论概念 首先我们来回顾一下基础数论中关于整数集Z={-,-2,-1,0,1,2,-}和自然数集N={0,1,2,3,4,-}的一些概念. 整除性与约数 一个整数可以被另一个整数整除是数论中的一个 ...

  5. 【牛客 - 318L】彪神666(水题,半高精度,递推,trick)

    题干: 在国外,666代表魔鬼,777代表上帝. 所以牛逼的彪神就非常不喜欢6这个数字. 有一天彪神突发奇想,,他想求一些书与6无关的数. 如果一个数能被6整除,或者它的十进制表示法中某位上的数字为6 ...

  6. 洛谷题单 算法1-1 模拟和高精度

    1 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中 ...

  7. Java实现选最远距离的座位_LeetCode算法题-Maximize Distance to Closest Person(Java实现)...

    这是悦乐书的第328次更新,第351篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第198题(顺位题号是849).在一排座位中,1表示一个人坐在该座位上,0表示座位是空的 ...

  8. largest number java_LeetCode算法题-Largest Number At Least Twice of Others(Java实现)

    这是悦乐书的第308次更新,第328篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第177题(顺位题号是747).在给定的整数数组中,总有一个最大的元素.查找数组中的最大 ...

  9. HDU 1047 Integer Inquiry( 高精度加法水 )

    链接:传送门 思路:高精度水题 /*************************************************************************> File ...

  10. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

最新文章

  1. k3应付系统初始化应付票据_在家工作时应付无尽干扰的真实感觉
  2. 3v stm32 供电 晶振起振_避免stm32rtc晶振不能起振的设计参考
  3. 基于STM32的SPI基本介绍
  4. 2020-10-25(动态调试SMC代码)
  5. 江苏关于领取软考2021年上半年合格证书的通知
  6. 基于stm32f405控制三相无刷电机例程_直流有刷电机和无刷电机的区别
  7. mysql+自动还原备份_Mysql 自动备份与恢复
  8. c#: 任务栏进度显示(TaskbarManager)
  9. java 排列3_java中的三大排序算法
  10. Request 部分功能
  11. 3dmax标注尺寸插件_抖音最火CAD插件教程汇总
  12. ajax鼠标滚动请求 或 手机往下拉请求
  13. 使用pthread-win32工程编译静态库
  14. java mybatis配置,mybatis配置——Java版
  15. zynq processing system 参数设置_【正点原子FPGA连载】第六章自定义IP核-呼吸灯实验-领航者 ZYNQ 之嵌入式开发指南...
  16. 戴尔r540服务器修改开机启动项,在BIOS设置中如何修改开机启动项
  17. 电子标签读取异常怎么办
  18. vue - 下拉列表
  19. ArcGIS 10 Desktop 最简安装及完全破解-- 终结者版本
  20. 阿里云Web应用防火墙使用教程

热门文章

  1. mysql 裸设备_MySQL使用裸设备存储
  2. DataGrid Bind Checkbox....
  3. ①变量、常量、数据类型解释 ②标识符命原则 ③sizeof使用原则 ④float型科学计数法 ⑤字符转换到ASCII表 ⑥\t 的使用意义【黑马程序员视频】
  4. 裸看美剧必备英文词汇文章索引
  5. 随手写了一段C++访问LDAP, 并且获取sid的代码
  6. Jointly Extracting Multiple Triplets with Multilayer Translation Constraints [论文研读]
  7. Unity 武器拖尾效果
  8. 学习webworker
  9. HNOI 2018 滚粗记
  10. matlab 矩阵除法求方程组的解,线性方程组求解矩阵除法.PPT