题目:
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有 无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?
大意:
给定a,b,且a,b互质,求最小不满足ax+by=k的k
思路:
蒟蒻表示并没有思路呜呜呜
开个玩笑。
NOIP第一道题通常都是送分题,但去年好像坑了不少的学姐学长……网上有很多大牛发布了各种数学解法,但蒟蒻想说,如果在NOIP考试时,先打暴力再找规律总是能猜到的。
此为暴力代码:
#include <iostream> using namespace std; bool v[10005]; int main(){ int a,b; cin>>a>>b; for(int i=0;i<=20;i++) for(int j=0;j<=20;j++) v[i*a+j*b]=1; for(int i=1;i<=a*b;i++){ cout<<i<<' '<<v[i]<<endl; } return 0; }
代码会输出1到a*b每个数字是否能准确支付。(其实一开始设置的是10000,但发现这个数总会小于a*b)
于是猜测最后的结果可能与a*b有关系。
再把每次的输入与最后的结果放在一起对比,利用你机智的大脑计算出(好吧就是显而易见法)公式:
ans=a*b-a-b
完美,再rand()几百组数据对拍,发现正确,OK
于是你就拿到了100分的好成绩(记得开long long)
qwq下面是丑丑的代码:
#include <iostream> using namespace std; int main(){ long long a,b; cin>>a>>b; cout<<(long long)a*b-a-b; return 0; }