NOIP2017 Day1 T1小凯的疑惑

题目:

  小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有 无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?

大意:

  给定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;
}

猜你喜欢

转载自www.cnblogs.com/cute-2333/p/9749500.html
今日推荐