同余定理简单应用 - poj2769 - hdu 1021 - hdu 2035
同余问题
基本定理:
若a,b,c,d是整数,m是正整数, a = b(mod m), c = d(mod m)
a+c = b+c(mod m)
ac = bc(mod m)
ax+cy = bx+dy(mod m) -同余式可以相加
ac = bd(mod m) -同余式可以相乘
a^n = b^n(mod m)
f(a) = f(b)(mod m)
if a = b(mod m) and d|m then a = b(mod d)
eg: 320 = 20(mod 100) and d = 50 then 320 = 20(mod 50)
and d = 10 then 320 = 20(mod 10)if a = b(mod m) then (a,m) = (b,m)
eg: 17 = 2(mod 5) ==> 1 = 1
if ac = bc(mod m) and (c,m) = d then a = b(mod m/d)
eg: 320 = 20(mod 100) ==> 16 = 1(mod 5)
(a+b)mod m = (a mod m + b mod m)mod m
(a * b)mod m = (a mod m * b mod m) mod m
(a^n)mod m = (a mod m)^n mod m
同余定理应用
pku 2769
需要加一个优化,否则会超时
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
int people[330];
bool vis[1000010];
bool judge[1000010];
int main()
{
int cas;
scanf("%d",&cas);
int num;
while(cas--)
{
scanf("%d",&num);
memset(judge,0,sizeof(judge));
for(int i = 0 ; i < num ; i++)
scanf("%d",&people[i]);
//剪枝
for(int i = 0 ; i < num ; i++)
for(int j = 0 ; j < num ; j++)
judge[abs(people[i]-people[j])] = 1;
//枚举
int k;
for(k = 1 ;; k++)
{
if(!judge[k])
{
bool isfind = true;
memset(vis,0,sizeof(vis));
for(int i = 0 ; i < num ; i++)
{
if(vis[people[i]%k])
{
isfind = false;
break;
}
vis[people[i]%k] = 1;
}
if(isfind)
{
printf("%d\n",k);
break;
}
}
}
}
return 0;
}
hdu 1021 Fibonacci Again
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
using namespace std;
int F[1000000+10];
void process()
{
memset(F,0,sizeof(F));
F[0] = 7%3, F[1] = 11%3;
for(int i = 2 ; i < 1000000 ; i++)
{
F[i] = (F[i-1]%3+F[i-2]%3)%3;
}
}
int main()
{
process();
int n;
while(cin >> n)
{
if(F[n])
cout << "no" << endl;
else
cout << "yes" << endl;
}
return 0;
}
hdu 2035 人见人爱A^B
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
using namespace std;
int F[1000000+10];
int process(int a, int b)
{
int ans = a;
b--;
while(b--)
{
ans = (ans%1000 * a%1000)%1000;
}
return ans;
}
int main()
{
int a, b;
while(cin >> a >> b && a)
{
cout << process(a,b) << endl;
}
return 0;
}
同余定理简单应用 - poj2769 - hdu 1021 - hdu 2035的更多相关文章
- HDU 1104 Remainder(BFS 同余定理)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1104 在做这道题目一定要对同余定理有足够的了解,所以对这道题目对同余定理进行总结 首先要明白计算机里的 ...
- hdu 4704 同余定理+普通快速幂
此题往后推几步就可找到规律,从1开始,答案分别是1,2,4,8,16.... 这样就可以知道,题目的目的是求2^n%Mod的结果.....此时想,应该会想到快速幂...然后接着会发现,由于n的值过大, ...
- 题解报告:hdu 1212 Big Number(大数取模+同余定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 Problem Description As we know, Big Number is al ...
- HDU-1163Eddy's digital Roots,九余定理的另一种写法!
下午做了NYOJ-424Eddy's digital Roots后才正式接触了九余定理,不过这题可不是用的九余定理做的.网上的博客千篇一律,所以本篇就不发篇幅过多介绍九余定理了: 但还是要知道什么是九 ...
- OJ随笔——【1088-N!】——同余定理
题目如下: Description 请求N!(N<=10000),输出结果对10007取余输入每行一个整数n,遇到-1结束.输出每行一个整数,为对应n的运算结果. Sample Input ...
- LightOJ1214 Large Division 基础数论+同余定理
Given two integers, a and b, you should check whether a is divisible by b or not. We know that an in ...
- POJ 2635 The Embarrassed Cryptographer (千进制,素数筛,同余定理)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15767 A ...
- Light oj 1214-Large Division (同余定理)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 题意很好懂,同余定理的运用,要是A数被B数整除,那么A%B等于0.而A很大,那我 ...
- 如何运用同余定理求余数【hdoj 1212 Big Number【大数求余数】】
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
随机推荐
- FIR Matlab DSP
- mybatis调用oracle存储过程例子.
1.MYBATIS方法: <select id="getFlowNum" statementType="CALLABLE"> <![CDATA ...
- Power Strings----poj2406(kmp扩展 循环节)
题目链接:http://poj.org/problem?id=2406 题意:就是求串s能够最多由多少个相同的串a串联而成: 例如 ababab 由3个ab串联而成: abababa 只能由1个aba ...
- web前端 微信支付之H5支付
一.什么是微信H5支付? 微信,简直是21世纪的社交产品之最.人们的生活已经离不开它,因为它的触角广泛蔓延像一张巨大无形的网,从而让我们的生活更加便捷高效,这款社交工具我们不做过多评价,但是我们要通过 ...
- 系列:每日一linux命令(转)
原文:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 一. 文件目录操作命令: 1.每天一个linux命令(1):ls命令 2 ...
- Win2003X64位,IIS6.0 32位 浏览报错的解决方案
目录 问题案例 原因分析 解决问题 其他 问题案例 1)服务浏览出现: service unavailable 2)服务浏览出现:HTTP 404 当前页找不到 3)在事件查看器:应用程序中报错:在同 ...
- 3D游戏引擎中常见的三维场景管理方法
对于一个有很多物体的3D场景来说,渲染这个场景最简单的方式就是用一个List将这些物体进行存储,并送入GPU进行渲染.当然,这种做法在效率上来说是相当低下的,因为真正需要渲染的物体应该是视椎体内的物体 ...
- JS通过身份证号获取生日、年龄、性别
<script> function IdCard(UUserCard,num){ if(num==1){ //获取出生日期 birth=UUserCard.substring(6, 10) ...
- boost编译很慢的解决方法
场景:使用boost库的正则模块时出现编译超慢的情况,看了头文件 #include <boost/regex.hpp> 的引用关系,它依赖的头文件相当多,这应该就是根本原因吧. 目前知道可 ...
- Linux系统——Raid磁盘阵列
Raid磁盘阵列 作用:解决磁盘速度.安全问题 Raid原理 Raid0 写入速度极快,有几块硬盘,写入速度就近似几倍,但是安全性极差,只要一块盘坏了,所有盘的数据全部坏掉,最少两块硬盘组合 性价比最 ...