暑假集训3
2022/8/15 23:27:15
本文主要是介绍暑假集训3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
去年暑假打过一次,但是当时太菜,今天看到之前写过,好奇多少分,考后交了一发,发现自己是真的菜
然后,就算开了个坑吧,四道题。。。
A. 数列
\(exgcd\)板子
然后,\(exgcd\)咋用来着?
滚回去学数论基础了
code
#include <cstdio> using namespace std; #define int long long int min(int x, int y) { return x < y ? x : y; } int max(int x, int y){return x > y ? x : y;} int abs(int x) { return x < 0 ? -x : x; } void swap(int &x, int &y){x ^= y; y ^= x; x ^= y;} int exgcd(int a, int b, int &x, int &y){ if(b == 0){ x = 1; y = 0; return a; } int gcd = exgcd(b, a % b, y, x); y = y - a / b * x; return gcd; } signed main(){ int n, a, b; scanf("%lld%lld%lld", &n, &a, &b); int x, y; if(a > b)swap(a, b); int gcd = exgcd(a, b, x, y); b = b / gcd; a = a / gcd; x = (x % b + b) % b; int ans = 0; bool flag = 1; for (int i = 1; i <= n; ++i){ int now; scanf("%lld",&now); now = abs(now); if(now % gcd)flag = 0; if(flag){ now = now / gcd; int nx = (x * now % b + b) % b; int ny = (now - a * nx) / b; ans += min(abs(nx) + abs(ny), abs(nx - b) + abs(ny + a)); } } if(flag)printf("%lld\n", ans); else printf("-1\n"); return 0; }
这篇关于暑假集训3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行