博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2115:C Looooops——题解
阅读量:5994 次
发布时间:2019-06-20

本文共 1151 字,大约阅读时间需要 3 分钟。

题目大意:for(i=A;i!=B;i+=C),i的类型的范围为0<=a<1<<k

exgcd裸题目。

设a=C,b=(1<<k),c=(B-A).

则ax+by=c.

#include
#include
#include
using namespace std;typedef long long ll;ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}void exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){ x=1;y=0; return; } exgcd(b,a%b,x,y); ll temp; temp=x; x=y; y=temp-(a/b)*y; return;}int main(){ ll A,B,C,k; while(cin>>A>>B>>C>>k){ if(A==B&&B==C&&C==k&&A==0)return 0; ll x,y; ll a=C,b=(ll)1<

 

#include<cstdio>

#include<cctype>
#include<iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
    return b?gcd(b,a%b):a;
}
void exgcd(ll a,ll b,ll &x,ll &y){
    if(b==0){
    x=1;y=0;
    return;
    }
    exgcd(b,a%b,x,y);
    ll temp;
    temp=x;
    x=y;
    y=temp-(a/b)*y;
    return;
}
int main(){
    ll A,B,C,k;
    while(cin>>A>>B>>C>>k){
    if(A==B&&B==C&&C==k&&A==0)return 0;
    ll x,y;
    ll a=C,b=(ll)1<<k,c=B-A;
    if(!c){
        printf("0\n");
        continue;
    }
    ll g=gcd(a,b);
    if(c%g){
        printf("FOREVER\n");
        continue;
    }
    a/=g;b/=g;c/=g;
    exgcd(a,b,x,y);
    x=(x%b*c%b+b)%b;
    printf("%lld\n",x);
    }
    return 0;
}

转载于:https://www.cnblogs.com/luyouqi233/p/7904472.html

你可能感兴趣的文章
Struts2返回JSON对象的方法总结
查看>>
期权只是一张纸而已,但它的背后是心机
查看>>
python基础——类和实例
查看>>
Git 常用的命令总结(欢迎收藏备用)
查看>>
gcc 编译错误之Clock skew detected
查看>>
大话程序猿眼里的高并发【转】
查看>>
Linux系统中“动态库”和“静态库”那点事儿【转】
查看>>
2 hive的使用 + hive的常用语法
查看>>
windows安装nginx部署
查看>>
面向对象(五)super
查看>>
Leetcode: Data Stream as Disjoint Intervals && Summary of TreeMap
查看>>
探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)
查看>>
C# HtmlElement的GetAttribute("class") return ""
查看>>
mysql ip转换函数
查看>>
Maven设置snapshot无法在远程仓库下载的问题解决
查看>>
vue 数据传递的方法
查看>>
linux watch 命令
查看>>
Spring Boot静态资源处理
查看>>
手把手带你打造一个 Android 热修复框架
查看>>
android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论【转】
查看>>