拓展欧几里得;求导&二分

POJ-1061  拓展欧几里得的应用,需要开long long

  第一次做这个题的时候进行了毫无用处的找公式(?),是个现在的我看不懂的迷之思路。

  第二发的时候还是不明白位数与数据大小的年轻人,1e9以上开long long,可以到1e18,2^63以上直接ull,2^64及以上考虑一下换思路吧。

  先放乱码

#include<cstdio>
#include<iostream>
using namespace std;
long long r; long long exp(long long a,long long b, long long&x,long long &y)
{
if(b==){
x=;
y=;
return a;
}
r=exp(b,a%b,y,x);
y-=a/b*x;
//printf("%d\n",b);
return r;
} int main()
{
long long x,y,m,n,L,t,c;
cin>>x>>y>>m>>n>>L;
exp(n-m,L,t,c);
if ((x-y)%r!=) cout<<"Impossible"<<endl;
else {
t*=(x-y)/r;
c*=(x-y)/r;
t=(t%L+L)%L;
cout<<t<<endl;
}
return ;
}

青蛙的约会

  首先,同余符号:≡。然后,丢番图方程。最后,贝祖定理。好的这些都没有什么直接关系。

  我们要求一个t,使得x + t*m ≡ y + t*n (mod L),x和y是已知的位置,m和n是速度,L是一圈的大小。同余在加减法没有什么特别的,我们可以通过移项得到(n-m) * t ≡ x-y (mod L),设倍数为c,化为等式即 (n-m)*t+L*c=x-y。现在我们得到了一个二元一次不定方程 at+bc=z。(为了方便理解我不把未知数替换成xy了)

  第二个要求是获得整数k解。那么我们设r=gcd(a,b),并在方程两边除以r,那么未知数系数均为整数,解为整数,可得条件z/r为整数。不符合这个条件就Impossible。这个方程会不会无解呢?贝祖定理告诉我们ax+by=z是必定有整数解的,所以我们只要得到ax0+by0=z的解,就可以得到t=(z/r*x0),c=(z/r*y0)。(显然r*z/r=z,ok吗,不知道为什么我之前这里不ok_(:з」∠)_)

  现在,我们来用拓欧算法求解x0,y0吧|ू・ω・` )

  1)b==0,则x=1,y=0;

  2)b!=0,gcd(a,b)=gcd(b,a%b),a%b=a-a/b*b(众所周知,自动向下取整)则ax0+by0=by1+(a-a/b*b)x1,x0=x1,y0=y1-a/b*y1(递归中我直接交换了两个未知数的位置)

  拓展就在于在求gcd之外我们要在递归中记录未知数的值,取地址是个好东西。

  对了还有y-=a/b*x,看具体方程吧,有的时候是+=(刷题过少,么得例子)

  要求三,最小的非负整数t,有个定理说r=1的时候,我们的方程在[0,b-1]上有唯一解,又有个定理说r=r的时候我们的方程在[0,b/r-1]上有唯一解。ummm,希望有一天我会证明嗯。总之我们用x=(x%r+r)%r就可以获得最小的非负整数解了,模r可能是负数,就加上r再模一遍,ok吧。

  感谢学长的讲解和无数前人的题解。orz

 HDU-2899  求导&二分,精确度表达

  乱码我就拍在这里了

#include<cstdio>
#include<cmath>
#define LIM 0.000001
double y;//都是因为这个y没double
double t; double F(double x,double y)
{
return pow(x,7.0)*+pow(x,6.0)*+pow(x,3.0)*+pow(x,2.0)*-y*x;
} double f(double x,double y)//求导
{
return pow(x,6.0)*+pow(x,5.0)*+pow(x,2.0)*+*x-y;
} int main()
{
int T;
double a;
scanf("%d",&T);
while(T--){
scanf("%lf",&y);
double hi=100.0000,lo=0.0000;//都是因为这里没有重定义
while((hi-lo)>LIM){
a=(hi+lo)/;
t=f(a,y);
if((hi-lo)>LIM*){//避免过早结束
if(t>) hi=a;
else lo=a;
}
else{
if(t>) hi=a-1e-;
else lo=a+1e-;
}
}
double va=F(a,y);
printf("%.4f\n",va);
}
return ;
}

Strange function

  可以看到wa点嗯。就不读码写话了。

[数]青蛙的约会&Strange function的更多相关文章

  1. poj 1061青蛙的约会

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 90083   Accepted: 16257 Descripti ...

  2. poj 1061 青蛙的约会 (扩展欧几里得模板)

    青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status ...

  3. POJ1061 青蛙的约会 和 LOJ2721 「NOI2018」屠龙勇士

    青蛙的约会 Language:Default 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 133470 Accep ...

  4. P1516 青蛙的约会和P2421 [NOI2002]荒岛野人

    洛谷 P1516 青蛙的约会 . 算是手推了一次数论题,以前做的都是看题解,虽然这题很水而且还交了5次才过... 求解方程\(x+am\equiv y+an \pmod l\)中,\(a\)的最小整数 ...

  5. POJ1061青蛙的约会[扩展欧几里得]

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 108911   Accepted: 21866 Descript ...

  6. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

  7. POJ 1061青蛙的约会(拓展欧几里德算法)

    题目链接: 传送门 青蛙的约会 Time Limit: 1000MS     Memory Limit: 65536K Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见 ...

  8. POJ 1061 青蛙的约会

                            青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 82859   A ...

  9. ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德

    POJ 1061 青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu  Descr ...

随机推荐

  1. Pandas逐行读取Dateframe并转为list

    for indexs in df.index: rowData = df.loc[indexs].values[0:7] rowData = rowData.tolist() #print(rowDa ...

  2. Java中日期格式(String、Date、Calendar)的相互转换

    package day20190318; import java.text.ParseException; import java.text.SimpleDateFormat; import java ...

  3. Tomcat在Window控制台下启动时乱码的两种解决办法

    在命令提示符中启动Tomcat时,日志窗口出现乱码: 乱码的原因肯定是日志解码错误引起的,因此就有一系列问题: 1.这个窗口的文本编码是什么? 窗口的文本编码查看:右击窗口>选项 可以看到窗口的 ...

  4. 【做题】UOJ450 - 复读机——单位根反演

    原文链接 https://www.cnblogs.com/cly-none/p/UOJ450.html 题意:请自行阅读. 考虑用生成函数来表示答案.因为秒之间是有序的,所以这应当是个指数生成函数.故 ...

  5. [java] 软工实践WordCount-Plus

    整体思路 模块化 对于任何一个小模块,例如:输入.输出.计算都独立开来,降低耦合. 插件化 对于任何一个模块均作成插件,可拔插,可更换,而不会导致其他的插件出现故障. 事件驱动 使用观察者模式,用事件 ...

  6. yii 动态增加路由规则

    使用 UrlManager类的addRules方法. 如 $url->addRules([ 'zzz/<id:\d+>' => '/test/hi', ]); 这个规则必须在开 ...

  7. C语言--第1次作业2.0版

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 经过一周C语言的正式课堂学习,不同于暑期时扒视频囫囵吞枣式学习,林丽老师的讲解详细异常,尽管已经学习了一部分内 ...

  8. C++ 获取Unix时间戳

    什么是Unix时间戳? Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970 ...

  9. echarts生成的图表大小怎么随屏幕的大小改变自适应

    最近在做图表,记录一下用到的知识点,当做自己的日记吧,会不断添加新内容 1,echarts生成的图表大小怎么随屏幕的大小改变自适应? this.chart.setOption(this.options ...

  10. [CentOS_7.4]Linux编译安装ffmpeg

    [CentOS_7.4]Linux编译安装ffmpeg   安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...