(hdu 2973 YAPTCHA) <数论—威尔逊定理>
2017-05-22 19:05
405 查看
题目
主要是这张图。
给定一个n,求这个代数式
多组数据
题解
[ ]是向下取整如果暴力算,样例都过不了
仔细观察这个式子,可以发现减号左右的东西其实很像,由此想到对这个式子化简
利用威尔逊定理,发现只要判断3*k+7是否是质数即可
设t=3*k+7,则原式化简为((t-1)!+1)/t-[(t-1)/t]
若t为质数,则(t-1)!%t=t-1,所以此时差为1
若t为合数,则此时差为0
用埃氏筛筛出所有素数,o(1)的回答询问
记得打回车符!!!
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; const int MAXN=1000010; int T,n; bool vis[MAXN*3+10]; int ans[MAXN]; int main(){ scanf("%d",&T); vis[1]=1; for(int i=2;i<=sqrt(MAXN*3+7);i++) if(!vis[i]) for(int j=i*i;j<=MAXN*3+7;j+=i) vis[j]=1;//埃氏筛 for(int i=1;i<=MAXN;++i) if(!vis[i*3+7]) ans[i]=ans[i-1]+1; else ans[i]=ans[i-1];//统计答案 for(int i=1;i<=T;++i){ scanf("%d",&n); printf("%d\n",ans ); } return 0; }
相关文章推荐
- ACM 数论 HDU 2973 YAPTCHA 威尔逊定理
- Hdu 2973 YAPTCHA (数论 威尔逊定理)
- YAPTCHA HDU - 2973 (威尔逊定理)
- HDU 2973 YAPTCHA 威尔逊定理
- HDU 2973 / UVa 1434 / CERC 2008 YAPTCHA (威尔逊定理及其逆定理)
- hdu - 2973 - YAPTCHA - (威尔逊定理)
- HDU 2973 YAPTCHA(威尔逊定理+前缀和)
- HDU 2973 YAPTCHA(威尔逊定理)
- (hdu 2588 gcd)<数论—欧拉函数>
- HDU 2973 YAPTCHA(威尔逊定理)
- hdu 1175 连连看<java>
- hdu 3328 Flipper <stack>
- hdu 1372 Knight Moves <java>
- hdu 1241 Oil Deposits <java>
- hdu 1509 Windows Message Queue<priority_queue>
- hdu 4288 Coder 一个很水的版本 >_<
- hdu 3371 Connect the Cities <prim>
- hdu 3215 The first place of 2^n<数学题>
- Hdu 4263 Red/Blue Spanning Tree<kruskal? >
- HDU-1251(字典树<Tire>入门)