数论比赛

Problem A Play with Floor and Ceil http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1614

扩展gcd求解2元不定式 ax+by=c    d=gcd(a,b)=ax+by;   x=x*c/d  y=y*c/d

 1 #include<cstdio>
 2 typedef long long LL;
 3 LL ext_gcd(LL a,LL b,LL &x,LL &y) { //扩展gcd d=gcd(a,b)=a*x+b*y; return d,x,y;
 4     LL t,ret;
 5     if(!b) {
 6         x=1;
 7         y=0;
 8         return a;
 9     }
10     ret=ext_gcd(b,a%b,x,y);
11     t=x;
12     x=y;
13     y=t-a/b*y;
14     return ret;
15 }
16 int main(){
17     int t,x,k;
18     while(~scanf("%d",&t)){
19         while(t--){
20             scanf("%d%d",&x,&k);
21             LL a=x/k;
22             LL b=a;
23             if(x%k) b++;
24             LL tx,ty;
25             LL d=ext_gcd(a,b,tx,ty);
26             printf("%lld %lld\n",tx*x/d,ty*x/d);
27         }
28     }
29     return 0;
30 }

Alternate Task http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2828

求因子的和

 1 #include<cstdio>
 2 int ds_func(int n){//求n所有除数的和
 3     int ret=1,m=n,t;
 4     for(int i=2;i*i<=n;i+=(i==2)?1:2){
 5         if(!(n%i)){
 6             t=i*i;
 7             n/=i;
 8             while(!(n%i)){
 9                 t*=i;
10                 n/=i;
11             }
12             ret*=(t-1)/(i-1);
13         }
14     }
15     return n>1?ret*(n+1):ret;
16 }
17 int main(){
18     int s,cas=1;
19     while(~scanf("%d",&s),s){
20         int ans=-1;
21         for(int i=s;i>=1;i--){
22             if(ds_func(i)==s){
23                 ans=i;
24                 break;
25             }
26         }
27         printf("Case %d: %d\n",cas++,ans);
28     }
29     return 0;
30 }

1434 - YAPTCHA  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=447&problem=4180&mosmsg=Submission+received+with+ID+14036675

找规律,发现3*k+7是素数值为1,否则为0,素数筛法。

 1 #include<cstdio>
 2 #include<cstring>
 3 #define mt(a,b) memset(a,b,sizeof(a))
 4 const int M=3000010;
 5 int pri[M],mark[M],pricnt;//mark[i]存i的最小因子,素数时mark[i]==i
 6 void sieve_primes() { //筛素数
 7     pricnt=0;
 8     mt(mark,0);
 9     mark[0]=mark[1]=1;
10     for(int i=2; i<M; i++) {
11         if(!mark[i]) pri[pricnt++]=mark[i]=i;
12         for(int j=0; pri[j]*i<M; j++) {
13             mark[i*pri[j]]=pri[j];
14             if(!(i%pri[j])) break;
15         }
16     }
17 }
18 int ans[M];
19 int main(){
20     sieve_primes();
21     ans[0]=0;
22     for(int i=1;i<=1000000;i++){
23         int j=3*i+7;
24         ans[i]=ans[i-1];
25         if(mark[j]==j) ans[i]++;
26     }
27     int t,n;
28     while(~scanf("%d",&t)){
29         while(t--){
30             scanf("%d",&n);
31             printf("%d\n",ans[n]);
32         }
33     }
34     return 0;
35 }

1415 - Gauss Prime http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=447&page=show_problem&problem=4161

 1 #include<cstdio>
 2 typedef long long LL;
 3 LL mulmod(LL a,LL b,LL c) { //ret=(a*b)%c
 4     LL ret=0;
 5     for(; b; a=(a<<1)%c,b>>=1) {
 6         if(b&1) {
 7             ret=(ret+a)%c;
 8         }
 9     }
10     return ret;
11 }
12 LL powmod(LL a,LL b,LL c) { //ret=(a^b)%mod
13     LL ret=1%c;
14     for(; b; a=mulmod(a,a,c),b>>=1) {
15         if(b&1) {
16             ret=mulmod(ret,a,c);
17         }
18     }
19     return ret;
20 }
21 bool suspect(LL a,int s,LL d,LL n) {
22     LL x=powmod(a,d,n);
23     if(x==1) return true;
24     while(s--) {
25         if(x==n-1) return true;
26         x=mulmod(x,x,n);
27     }
28     return false;
29 }
30 const int test[]= {2,3,5,7,11,13,17,19,23,29,-1}; // for n < 10^16
31 bool isprime(LL n) { //Miller-Rabin 大素数测试
32     if(n<=1||(n>2&&(!(n&1)))) return false;
33     LL d=n-1;
34     int s=0;
35     while(!(d&1)) {
36         s++;
37         d>>=1;
38     }
39     for(int i=0; test[i]<n&&~test[i]; i++) {
40         if(!suspect(test[i],s,d,n)) return false;
41     }
42     return true;
43 }
44 int main(){
45     int t,a,b;
46     while(~scanf("%d",&t)){
47         while(t--){
48             scanf("%d%d",&a,&b);
49             if(a){
50                 LL t=a*a+2*b*b;
51                 if(isprime(t)){
52                     puts("Yes");
53                     continue;
54                 }
55             }
56             puts("No");
57         }
58     }
59     return 0;
60 }

end

数论比赛

时间: 2024-08-28 09:28:05

数论比赛的相关文章

数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)

数学渣渣愉快的玩了一把数论,来总结一下几种常用的算法入门,不过鶸也是刚刚入门, 所以也只是粗略的记录下原理,贴下模板,以及入门题目(感受下模板怎么用的) (PS:文中蓝色字体都可以点进去查看百度原文) 附赠数论入门训练专题:点我打开专题(题目顺序基本正常,用以配套数论入门) 一.同余定理 简单粗暴的说就是:若 a-b == m 那么 a%m == b%m 这个模运算性质一眼看出...直接上入门水题: Reduced ID Numbers 附AC代码(这个也没啥模板....知道就好) #inclu

比赛总结

昨天和sduwh打了场友谊赛.题目整体并不难,绝大多数都是基本的数学问题,然而出题的情况极其糟糕.之前就让队友去负责弄数学专题,看来队友也没好好弄,我也没去落实,是我做队长的失职,或许我本身就不适合做队长. 下面结合题目对本次比赛做一个总结: A题:简单数学题.求N!末尾0的个数.N!=2^k1*3^k2*4^k3*5^k4……对于0的产生只能由2和5相乘得到,于是ans=min(k1,k4),而显然k1>=k4,于是ans=k4.对于给定的n,考虑不超过n的数中,有多少个能被5整除,有多少个能

专访北京航空航天大学黎健成:我和编程比赛

前言: 在对黎健成采访的过程中,他始终强调自己是一名普通的学生,不能和曹鹏博士那样的刷题大牛相比,他接受采访是为了和更多的同学交流探讨.笔者认为,一个在各类活动中能够取得优异成绩的学生,一定在课余时间付出大量时间进行练习和复习,大量刷题和阅读技术书籍."天道酬勤",虽然天资重要,但是更离不开勤奋与努力.黎健成认为自己取得成绩,更多是通过努力付出得到的. 黎健成,北京航空航天大学软件工程专业的大四学生.除了正常上课学习外,积极参加课外竞赛活动,在竞赛活动中不断学习成长.曾获得ACM-IC

记第一场cf比赛

比赛感想 本来21:05开始的比赛,结果记成21:30了...晚了25分钟才开始[捂脸] 这次是Educational Round,所以还比较简单. 前两道题一眼看去模拟+贪心,怕错仔细看了好几遍题,很快切掉 第三题,dfs+贪心 一开始想得有点简单,少了几种情况,写代码时才发现问题-- 悲伤地发现 写+调 这道题用了我很长时间-(这叫什么?基础不牢,地动山摇!) 然后,居然只剩40分钟了-- 第四题,啊啊啊! 图论,我的痛! 果断跳过 第五题,额,不就是个线段树么? n<=10 \(^9\)

CF 980D Perfect Groups(数论)

CF 980D Perfect Groups(数论) 一个数组a的子序列划分仅当这样是合法的:每个划分中的任意两个数乘积是完全平方数.定义a的权值为a的最小子序列划分个数.现在给出一个数组b,问权值为i的b的子串个数. 这题意真不是人类智慧能轻易描述的.据说此题在比赛场上读题30min,做题5min,做完还WA.果然是坑题. 如果有两个数a和b,a和b的乘积是完全平方数,那么如果a有因子x^2,那么x^2就可以去掉,使a变成a/x^2,结论依然成立.因此我们把所有数的质因子次数mod2,可以发现

贝壳找房计数比赛&amp;&amp;祭facinv

震惊!阶乘逆元处理背后竟有如此玄机…… 题目描述 贝壳找房举办了一场计数比赛,比赛题目如下. 给一个字符串 s 和字符串 t,求出 s 的所有去重全排列中 t 出现的次数.比如aab的去重全排列为aab.aba.baa.注意aaaa算出现两次aaa. 你的老大希望你帮他写一个程序作弊. 输入格式 第一行一个整数 TT,表示数据组数. 每组数据中,第一行一个字符串 ss,第二行一个字符串 tt. 数据保证 1≤T≤100, 1≤∣t∣≤∣s∣≤105,t,s 只包含小写字母. 输出格式 输出一共 

[CodeForces - 1225D]Power Products 【数论】 【分解质因数】

[CodeForces - 1225D]Power Products [数论] [分解质因数] 题目描述 Time limit 2000 ms Memory limit 524288 kB Source Technocup 2020 - Elimination Round 2 Tags hashing math number theory *1900 Site https://codeforces.com/problemset/problem/1225/D 题面 Example Input 6

NKOJ1236 a^b (数论定理的应用)

          a^b 对于任意两个正整数a,b(0<=a,b<10000)计算a b各位数字的和的各位数字的和的各位数字的和的各位数字的和. Input 输入有多组数据,每组只有一行,包含两个正整数a,b.最后一组a=0,b=0表示输入结束,不需要处理. Output 对于每组输入数据,输出ab各位数字的和的各位数字的和的各位数字的和的各位数字的和. Sample Input 2 3 5 7 0 0 Sample Output 8 5 思路: 数论定理:任何数除以9的余数等于各位数的和除

NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推 ||卡特兰数(转化成01字符串))

Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m.但是大家来的时间不同,随机次序来机房,带电脑的人直接准备比赛而没带电脑的人需要向带电脑并还没和别人公用的人求助(当然会答应).但是,如果不存在带电脑并还没和别人公用的人,那他就要等了,等是很让人头疼的,这就不和谐了,当然假如没有这样的情况发生比赛是很和谐的. Input 输入多组数据,每组数据只有一行m(