问题标题: 酷町堂:7278!!!急

0
0
已解决
朱明磊
朱明磊
修练者
修练者

题目链接: 酷町堂:7278

#include<bits/stdc++.h>

using namespace std;

int n,a[15],b[15];

bool check(int x){

    for(int i=1;i<=n;i+=1){

        if(x%a[i]!=b[i]){

            return 0;

        }

    }

    return 1;

}

int main(){

    cin>>n;

    for(int i=1;i<=n;i++){

        cin>>a[i]>>b[i];

    }

    for(int k=0;;k++){

        if(check(k)){

            cout<<k;

            break;;

        }

    }

    return 0;

}

50分超时

帮忙找错


0
已采纳
熊潇然
熊潇然
初级启示者
初级启示者

这个有点水,多一点豆子就好了

不过我还是会告诉你

0
丁梓豪
丁梓豪
新手天翼
新手天翼

这一题纯粹枚举是会超时的,要进行一些优化:
枚举a[i]的公倍数
这个十分简单
输入不变
首先,定义两个变量t和ans

t等于a[1]

ans等于b[1]

再来一个for循环从2遍历到n
for循环里再来一个while循环

括号里的条件是ans%a[i]!=b[i]

while循环里头是:ans+=t;

这就相当于你的cheak了
写完while循环之后还要再加一个

t*=a[i]

最后输出ans就行了

祝你AC愉快~

0
0
我要回答