AtCoder gc009 A Multiple Array
来源:互联网 发布:大学生心理普查数据 编辑:程序博客网 时间:2024/06/14 06:49
A - Multiple Array
時間制限 : 2sec / メモリ制限 : 256MB
配点 : 300 点
問題文
N 項からなる数列 A1,…,AN があり、N 個のボタンがあります。 i(1≦i≦N) 個目のボタンを押すと、数列 A の 1 項目から i 項目までの値が 1 ずつ増加します。
数列 B1,…,BN が与えられます。高橋君は、これらのボタンを何回か押して、すべての i に対し、Ai が Bi の倍数になるようにします。
高橋君がボタンを押す回数の最小値を求めてください。
制約
- 入力はすべて整数である。
- 1≦N≦105
- 0≦Ai≦109(1≦i≦N)
- 1≦Bi≦109(1≦i≦N)
入力
入力は以下の形式で標準入力から与えられる。
NA1 B1:AN BN
出力
高橋君がボタンを押す回数の最小値を表す整数を出力せよ。
入力例 1
Copy
33 52 79 4
出力例 1
Copy
7
1 つめのボタンを 2 回、2 つめのボタンを 2 回、3 つめのボタンを 3 回押せばよいです。
入力例 2
Copy
73 14 15 92 65 35 89 7
出力例 2
Copy
22
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int n,m,x;const int maxn = 1e5+10;long long gcd(long long a, long long b){ return a == 0 ? b : gcd(b % a, a);}long long a[maxn],b[maxn];int main(){ long long i,j,k; long long ans; long long now; long long comm; while(~scanf("%d",&n)){ ans = 0; now = 0; for(i=1;i<=n;i++){ scanf("%lld%lld",&a[i],&b[i]); } for(i=n;i>=1;i--){ a[i] += ans; for(j=a[i]/b[i];;j++){ if(j*b[i]>=a[i]){ break; } } comm = j*b[i] - a[i]; ans += comm; } printf("%lld\n",ans); } }
0 0
- AtCoder gc009 A Multiple Array
- AtCoder ARC088C Multiple Gift
- AtCoder:Big Array(思维)
- atcoder之A Mountaineer
- [AtCoder Beginner Contest 077]D-Small Multiple
- boost multiple array
- atcoder之A Great Alchemist
- AtCoder Grand Contest 012 A
- AtCoder Grand Contest 017-A
- AtCoder Beginner Contest 067 A
- AtCoder Grand Contest 018 A
- atcoder grand Contest 018 A
- AtCoder Grand Contest 018 A
- How to sort an array of hashes into hashes with multiple values for a key?
- AtCoder
- AtCoder
- AtCoder
- AtCoder
- iptables详解
- Handler结合源码的总结
- Linux_ cut 指令
- 在oracle中创建指定时间范围的记录
- J2SE、J2EE区别
- AtCoder gc009 A Multiple Array
- Linux用户密码管理
- 明天就要回家了
- flex&bison范例初步学习
- 记那些年过后...
- socket进行RFCOMM连接(Wince 6.0)
- mycat小测试
- 理解java中字符流与字节流的区别
- linux进程间通信方法