CodeForces Round #521 (Div.3) A. Frog Jumping
http://codeforces.com/contest/1077/problem/A
A frog is currently at the point 00 on a coordinate axis OxOx. It jumps by the following algorithm: the first jump is aa units to the right, the second jump is bb units to the left, the third jump is aa units to the right, the fourth jump is bb units to the left, and so on.
Formally:
- if the frog has jumped an even number of times (before the current jump), it jumps from its current position xx to position x+ax+a;
- otherwise it jumps from its current position xx to position x−bx−b.
Your task is to calculate the position of the frog after kk jumps.
But... One more thing. You are watching tt different frogs so you have to answer tt independent queries.
The first line of the input contains one integer tt (1≤t≤10001≤t≤1000) — the number of queries.
Each of the next tt lines contain queries (one query per line).
The query is described as three space-separated integers a,b,ka,b,k (1≤a,b,k≤1091≤a,b,k≤109) — the lengths of two types of jumps and the number of jumps, respectively.
Print tt integers. The ii-th integer should be the answer for the ii-th query.
6 5 2 3 100 1 4 1 10 5 1000000000 1 6 1 1 1000000000 1 1 999999999
8 198 -17 2999999997 0 1
代码:
#include <bits/stdc++.h> using namespace std; int T; int main() { scanf("%d", &T); while(T --) { long long a, b, k; cin >>a >> b >> k; long long ans = 0; if(a == b) { if(k % 2 == 0) ans = 0; else ans = a; } else { if(k % 2 == 0) ans = (k / 2) * (a - b); else ans = (k / 2) * (a - b) + a; } cout << ans << endl; } return 0; }