zjut 1090 --------同余定理的应用

(a+b)%c===(a%c  + b%c ) %c

#include<iostream>
using namespace std;
int a[5000]={0,0,1};
int main()
{ int i,p,k;
while(cin>>p>>k)
{ if(p==0&&k==0) break;
for(i=3;i<=p;i++)
a[i]=(a[i-1]%(1<<k)+a[i-2]%(i<<k))%(1<<k);
cout<<a[p]<<endl;
}
return 0;
}

#include<iostream>
using namespace std;
int a[5000]={0,0,1};
int main()
{ int i,n,k;
while(cin>>n>>k)
{ if(n==0&&k==0) break;
for(i=3;i<=n;i++)
a[i]=(a[i-1]%(1<<k)+a[i-2]%(i<<k))%(1<<k);
cout<<a[n]<<endl;
}
return 0;
}

zjut 1090 --------同余定理的应用,布布扣,bubuko.com

时间: 2024-09-30 17:10:15

zjut 1090 --------同余定理的应用的相关文章

POJ 2769 Reduced ID Numbers 同余定理

Reduced ID Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8989 Accepted: 3610 Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is an

POJ--1465--Multiple【BFS+同余定理】

链接:http://poj.org/problem?id=1465 题意:给一个数字n,和m个数字,找一个由这些数字组成的最小的n的倍数,如果不存在输出0. 思路:这题怎么想都想不到bfs上去,看了别人的解题报告,其实是用bfs来枚举,但是加了一个牛逼的剪枝:同余.即如果A%X==B%X,则(A*10+K)%X==(B*10+K)%X. 我们枚举m中每一个数字做这个K,实际上是枚举了一个数,B*10是之前枚举的数字,如果这个数%X得到的值之前已经得到过,则没必要再往下计算,因为根据同余定理剩下的

2016湖南省赛----A 2016 (同余定理)

2016湖南省赛----A 2016 (同余定理) Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. Input 输入包含不超过 30 组数据. 每组数据包含两个整数 n,m (1≤n,m≤10 9). Output 对于每组数据,输出一个整数表示满足条件的数量. Sample Input 32 63 2016 2016 1000000000 1000000000 Sample

Light oj 1214-Large Division (同余定理)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 题意很好懂,同余定理的运用,要是A数被B数整除,那么A%B等于0.而A很大,那我就把A的每一位拆开,比如A是2341,那么2341=2000+300+40+1,然后你懂的... 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5

Codeforces 464C Substitutes in Number 同余定理+模拟

题目链接:点击打开链接 题意: 给定一串数字 下面有n个操作 每行格式形如 d->t d为一位数字,t为任意长度的数字. t的长度和不超过100000 问:最后的结果%1e9+7 思路: 首先我们可以得到一个结论: 同余定理使用后不能再修改数字. 那么为了让同余定理能够使用,我们倒序处理每个数字,这样就能保证能够使用同余定理. 记录每个数字实际代表的数字和实际对应的位数. 然后倒序处理上来即可. #include <stdio.h> #include <string.h> #

[ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)

The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11978   Accepted: 3194 Description The young and very promising cryptographer Odd Even has implemented the security module of a large system with thousands of

CSDN 厦门大学线下编程比赛第一题:求和(同余定理)

题目意思: 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和. 输入描述:测试数据有多组,以文件结尾.每行输入a,n(1<=a,n<=1000000).输出描述:由于结果可能比较大,所以请输出答案mod 1000000007. http://student.csdn.net/mcs/programming_challenges 题目分析: 同余定理: s=0; abc&MOD=((a*10%MOD+b%MOD)*10%MOD+a%MOD)%MOD: //迭

NYOJ 420 p次方求和 (快速幂+同余定理)

题目描述: http://acm.nyist.net/JudgeOnline/problem.php?pid=420 一个很简单的问题,求1^p+2^p+3^p+--+n^p的和. 输入 第一行单独一个数字t表示测试数据组数.接下来会有t行数字,每行包括两个数字n,p, 输入保证0<n<=1000,0<=p<=1000. 输出 输出1^p+2^p+3^p+--+n^p对10003取余的结果,每个结果单独占一行. 样例输入 210 110 2 样例输出 55385 题目分析: 快速幂

POJ Multiple (BFS,同余定理)

http://poj.org/problem?id=1465 Multiple Time Limit: 1000MS   Memory Limit: 32768K Total Submissions: 6164   Accepted: 1339 Description a program that, given a natural number N between 0 and 4999 (inclusively), and M distinct decimal digits X1,X2..XM