NC240498. 清楚姐姐带带我
描述
输入描述
第一行,一个正整数。
后面行,每行 2 个正整数
输出描述
一个正整数,表示小Y能达到的最大实力值对 19980829 取模后的值。
示例1
输入:
4 1 10 5 4 5 2 3 1
输出:
15
说明:
小 Y 可以选择:示例2
输入:
4 114514 2000000 1477 3000000 2333 255 10086 3000000
输出:
9268298
C++(g++ 7.5.0) 解法, 执行用时: 318ms, 内存消耗: 424K, 提交时间: 2022-09-14 15:26:18
#include<iostream> using namespace std; #define int long long const int mod=19980829; int n,a,b; signed main(){ cin>>n; int res=0; for(int i=1;i<=n;i++){ cin>>a>>b; if(res*b>res+b)res*=b; else res+=a; res%=mod; } cout<<res; }
C++(clang++ 11.0.1) 解法, 执行用时: 147ms, 内存消耗: 444K, 提交时间: 2022-09-14 08:49:13
#include<iostream> using namespace std; const int MOD=19980829; int n; long long a,b,ans; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n; for(int i=0;i<n;i++){ cin>>a>>b; if(ans*b>ans+b)ans*=b;else ans+=a; ans %= MOD; } cout<<ans; return 0; }
Python3 解法, 执行用时: 1362ms, 内存消耗: 4600K, 提交时间: 2022-09-04 10:25:28
ans=0 f=0 for _ in range(int(input())): a,b=map(int,input().split()) if f and b>1: ans=ans*b%19980829 else: ans=max(ans+a,ans*b) if ans>1e9: f=1 print(ans%19980829)