POJ 2115 C Looooops( 简单拓欧 + 快速幂 )
**链接:****传送门 **
题意:题目中给出一个循环 for (variable = A; variable != B; variable += C) ,这个东东还需要 mod 2^k 问至少多次能退出,如果进入死循环输出输出"FOREVER"
思路:简单拓欧嘛,简单分析一下 A + C * x = B + 2^k * y,如果方程有解,那么最小整数解就是最少次数,否则就是死循环,写了一下快速幂,不清楚普通求 2^k 也并不会T,还是快一点好
/*************************************************************************
> File Name: poj2115.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月21日 星期日 20时06分05秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll exgcd(ll a,ll b,ll& x,ll& y){
if( b == 0 ){
x = 1; y = 0; return a;
}
ll d = exgcd( b , a % b , x , y );
ll tmp = x;
x = y; y = tmp - a/b*y;
return d;
}
ll quick_mod(ll a,ll x){
ll ret = 1;
while(x){
if( x & 1 ) ret = ret * a;
a = a * a;
x >>= 1;
}
return ret;
}
int main(){
ll a , b , c , k , x , y;
while(~scanf("%lld%lld%lld%lld",&a,&b,&c,&k)){
if( a == 0 && b == 0 && c == 0 && k == 0 ) break;
ll t = quick_mod(2,k);
ll d = exgcd( c , t , x , y );
ll c = b - a;
if( c % d != 0 ) printf("FOREVER\n");
else{
x = x*(c/d);
x = (x%(t/d) + (t/d))%(t/d);
printf("%lld\n",x);
}
}
return 0;
}
POJ 2115 C Looooops( 简单拓欧 + 快速幂 )的更多相关文章
- POJ 2115 C Looooops(扩展欧几里得应用)
题目地址:POJ 2115 水题. . 公式非常好推.最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是 n*c+m*2^k==b-a.即求n*c==(b-a)mod( ...
- 【题解】POJ 2115 C Looooops (Exgcd)
POJ 2115:http://poj.org/problem?id=2115 思路 设循环T次 则要满足A≡(B+CT)(mod 2k) 可得 A=B+CT+m*2k 移项得C*T+2k*m=B-A ...
- POJ 3233 Matrix Power Series (矩阵快速幂)
题目链接 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A^2 + A^3 + - ...
- hdu4686 简单的矩阵快速幂求前n项和
HDU4686 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意:题目说的很清楚了,英语不好的猜也该猜懂了,就是求一个表达式的前n项和,矩阵 ...
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 18450 Accepted: ...
- 【POJ 1845】Sumdiv——数论 质因数 + 分治 + 快速幂
(题面来自luogu) 题目描述 输入两个正整数a和b,求a^b的所有因子之和.结果太大,只要输出它对9901的余数. 输入格式 仅一行,为两个正整数a和b(0≤a,b≤50000000). 输出格式 ...
- POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)
题意:求S=(A+A^2+A^3+...+A^k)%m的和 方法一:二分求解S=A+A^2+...+A^k若k为奇数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+ ...
- poj 3735 Training little cats(矩阵快速幂,模版更权威,这题数据很坑)
题目 矩阵快速幂,这里的模版就是计算A^n的,A为矩阵. 之前的矩阵快速幂貌似还是个更通用一些. 下面的题目解释来自 我只想做一个努力的人 @@@请注意 ,单位矩阵最初构造 行和列都要是(猫咪数+1) ...
- POJ --- 3613 (K步最短路+矩阵快速幂+floyd)
Cow Relays Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided ...
随机推荐
- SGU - 296 - Sasha vs. Kate
上题目: 296. Sasha vs. Kate Time limit per test: 1 second(s)Memory limit: 65536 kilobytes input: standa ...
- 0301mysql数据库建表情况
转自博客:http://blog.csdn.net/dreamcode/article/details/8557197 一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段 ...
- mysql 服务器监控系列-黄杉 mysqldba
http://blog.csdn.net/mchdba/article/category/2220809
- hdu 4586 Play the Dice (概率+等比数列)
Play the Dice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- Python 远程调用MetaSploit
(1)安装Python的msgpack类库.MSF官方文档中的数据序列化标准就是參照msgpack. root@kali:~# apt-get install python-setuptools ro ...
- UVa 10290 - {Sum+=i++} to Reach N
题目:给你一个数字问将他写成连续的数字的和的形式.有几种写法. 分析:数论. 设拆成的序列个数为k,我们分两种情况讨论: 1.拆成奇数个连续数.那么设中位数是a,则有n = k * a: 2.拆成偶数 ...
- Razor Intro
http://www.w3schools.com/aspnet/razor_intro.asp Razor is not a programming language. It's a server s ...
- Linux - 设置光盘,开机自动挂载。
设置光盘,开机自动挂载. 挂载, 在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上. 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, ...
- [转载]H3C S3600 DHCP-SERVER 配置【原创】
原文地址:H3C S3600 DHCP-SERVER 配置[原创]作者:旅行者萧 案例要求: 在H3C S3600-28TP-SI 的vlan 里配置DHCP server,使用vlan 里部分网段为 ...
- [HTML5] 新标签解释及用法
转自:http://www.cnblogs.com/yuzhongwusan/archive/2011/11/17/2252208.html HTML 5 是一个新的网络标准,目标在于取代现有的 HT ...