BZOJ2659算不出的算式不正经题解

题目链接

https://www.lydsy.com/JudgeOnline/problem.php?id=2659

分析

难得做到此类打表题目,不觉回想到NOIp2017考场上的SB经历

这道题看到这么吓人的算式,当然是要....

咳咳,像我这种菜鸡当然是先要打个表

好象没什么规律,但我们可以找找特殊项

比如(3,3)和(5,5),(7,7),大胆猜想若两数相同对于奇质数\(x\)\(ans=(x*x-1)/4\)

然后就往4方面去想,把所有答案乘以4得到另一张表,然后就很容易发现规律了

\[ans= \begin{cases} p*q/4& \text{p=q}\\ (p-1)*(q-1)/4& \text{p!=q} \end{cases} \]

证明

数竞队的还没有回应,

不过在网上找到一篇不错的

https://www.cnblogs.com/Mychael/p/9115847.html

个人觉得讲得比其他blog好一点

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cctype>
#include <vector>
#define ll long long 
#define ri register int 
const int maxn=100005;
const int inf=0x7fffffff; 
int main(){
 int a,b;
 scanf("%d %d",&a,&b);
 if(a==b)printf("%lld\n",1ll*a*b/4);
 else printf("%lld\n",1ll*(a-1)*(b-1)/4);
 return 0;
}
posted @ 2018-07-15 15:32  Rye_Catcher  阅读(152)  评论(0编辑  收藏  举报