NOIP 2017 Day1 T1 小凯的疑惑
2018-06-17 21:27:54来源:未知 阅读 ()
Luogu题面
小学奥数呵呵
在考场上40分钟没证出来(数学太差),运气好看到了规律...
来一波证明:
定义 f(a,b) 表示在 gcd(a,b)==1 情况下的答案。
贝祖定理 易证:对于 gcd(c,b)==1,c > a , 有 f(c,b) = f(a,b) + (c-a)*(b-1)
因为我们已知:f(a,b) == f(b,a) ,且 gcd(a,b) == 1
那么我们不妨令 b 为奇数(两数至少一数为奇数)
那么,f(a,b) == f(2,b) + (a-2)*(b-1)
接下来,同理我们解 f(2,b) = f(b,2) = f(3,2) + (b-3)*(2-1) == f(3,2) + (b-3)
由于我们已知:f(2,3) == 1
所以,f(a,b) = f(2,b) + (a-2)*(b-1) = f(3,2) + (b-3) + (a-2)*(b-1) = 1 + b-3 + (ab-2b-a+2) == ab-b-a
证毕。
代码...没多大意义啊...
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b; // 不开 LL 会炸掉
scanf("%lld%lld",&a,&b);
printf("%lld",a*b-a-b);
return 0;
}
%%% Dalao 的 ex_gcd
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b){
return b == 0 ? a : gcd(b, a % b);
}
void ex_gcd(ll a, ll b, ll &x, ll &y){
if(b == 0){
x = 1, y = 0; return;
}
ex_gcd(b, a % b, y, x);
y -= (a / b) * x;
}
ll a, b;
int main(){
cin >> a >> b;
if(a > b) swap(a, b);
ll x, y;
ex_gcd(a, b, x, y);
if(x > 0){
swap(a, b);
swap(x, y);
}
ll tmp = (-x) / b;
x = x + tmp * b;
y = y - tmp * a;
while(x < 0) x = x + b, y = y - a;
while(x > 0) x = x - b, y = y + a;
ll ans;
ll xx2 = x + b;
ans = a * (xx2 - 1) + b * (y - 1);
cout << ans - 1 << endl;
return 0;
}
By The_Seventh
2017-12-23 19:32:14
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- windows7 + Qt(MSVC2017) + VS2019安装配置 2020-04-25
- 2020年04月10日UCF Local Programming Contest 2017 2020-04-10
- 津津的储蓄计划 NOIp提高组2004 2020-04-01
- 【做题笔记】[NOIOJ,非NOIp原题]装箱问题 2020-02-14
- CSP(noip)中的简单对拍写法 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash