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 xbx−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.

Input

The first line of the input contains one integer tt (1t10001≤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 (1a,b,k1091≤a,b,k≤109) — the lengths of two types of jumps and the number of jumps, respectively.

Output

Print tt integers. The ii-th integer should be the answer for the ii-th query.

Example
input
Copy
6
5 2 3
100 1 4
1 10 5
1000000000 1 6
1 1 1000000000
1 1 999999999
output
Copy
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;
}

  

原文地址:https://www.cnblogs.com/zlrrrr/p/9990591.html