博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从【BZOJ4173】谈做题技巧
阅读量:6622 次
发布时间:2019-06-25

本文共 1346 字,大约阅读时间需要 4 分钟。

题目描述

-------------------------------------------------------------------------------------------------------------------------------------------

正常题解:

  

 

特别的做题技巧

  我们一上来,先写一个打表程序,打出一系列n,m对应的答案。

  我们发现,对于素数n,m 他们的答案总是(n-1)*n*(m-1)*m。

  一开始,我们先稳了一个素数的情况,起码也得有20分吧!心态放好!

  然后,我们来思考为什么素数有这样的性质:

    如果你对欧拉函数有足够的了解的话,你会知道,对于一个素数P 他的欧拉函数是P-1

    那么,刚才的M-1 N-1 实际上是欧拉函数,那么,对于和数是否也有这样的性质呢?

    答案是显然的。

    这就是计算机的优点,虽然无法给出正确证明,但是可以通过大量实验数据,得到一个令人信服的结论。

    做题总耗时: 打表程序——2分钟,找规律——3分钟,写正解程序——5分钟。

    一道难题就被我们10分钟干掉了。

    信息学竞赛不应该是人类的拼命推理,推公式,而是人脑与计算机的完美结合。

 

    附上正解代码

    

1 #include
2 #include
3 #define N 40000 4 using namespace std; 5 const unsigned long long int mod = 998244353; 6 int n,m; 7 unsigned long long phi(unsigned long long x) 8 { 9 unsigned long long int res = x,a = x;10 for(unsigned long long int i=2;i*i<=a;i++)11 {12 if(a%i==0)13 {14 res = res/i*(i-1);15 while(a%i==0)a/=i;16 }17 }18 if(a>1)res =res/a*(a-1);19 return res%mod;20 }21 unsigned long long a,b;22 int main() 23 { 24 scanf("%llu%llu",&a,&b);25 unsigned long long p1 = phi(a),p2=phi(b),ans=0;26 ans=p1%mod*p2%mod*(a%mod)%mod*(b%mod)%mod;27 printf("%llu",ans);28 }
View Code

 

    

 

转载于:https://www.cnblogs.com/Syameimaru/p/9300950.html

你可能感兴趣的文章
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
native.js是什么且如何使用
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>
[俗一下]世界500强公司的面试问题与答案提示 [转]
查看>>
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
查看>>
SQL Server数据导入导出技术概述与比较
查看>>
format的用法
查看>>
DHCPv6 server port and DHCPv6 client port
查看>>
10个最佳的触控手式的JavaScript框架(转)
查看>>
BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
查看>>
Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
查看>>
DNGuard 免费的DotNet加密保护工具 V1.0
查看>>
编程中的命名设计
查看>>
easyui form validate总是返回false原因
查看>>
在(CListView)列表视图中添加右键菜单的方法
查看>>