A. 計算関数
テストごとの制限時間
1 秒
テストごとのメモリ制限
256 メガバイト
入力
標準入力
出力
標準出力题目链接: http:// codeforces.com/contest/486/problem/A
正の整数 n の場合、関数 f:
f(n)?=??-?1?+?2?-?3?+? を定義しましょう。 ..?+?(?-?1)nn
あなたのタスクは、指定された整数 n に対して f(n) を計算することです。
入力
1 行には正の整数 n が含まれています(1?≤?n) ?≤?1015)。
出力
f(n) を 1 行で出力します。
サンプルテスト
入力
出力
入力
出力
-3
注意
f(4)?=??-?1?+?2?-?3?+?4?=?2
f(5)?=??- ?1?+?2?-?3?+?4?-?5?=??-?3
解题思路:
给你n,求f(n) 。
は、n が非常に大きいため、暴力的に計算する必要があるため、暴力的に解決できないことが最初に確認されます。 、f(2) = 1、f(3) = -2、f(4) = 2、f(5) = -3、f(6) = 3・・・・・・・・・・・・这样规律就ご覧のとおり、2 つの組は、n/2 が正の場合、n/2 が奇数の場合、私たちは上方に取り込み、つまり n / 2 + 1
最後に
完整コード:
#include <functional>#include <algorithm>#include <iostream>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cstring>#include <climits>#include <cassert>#include <complex>#include <cstdio>#include <string>#include <vector>#include <bitset>#include <queue>#include <stack>#include <cmath>#include <ctime>#include <list>#include <set>#include <map>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")typedef long long LL;typedef double DB;typedef unsigned uint;typedef unsigned long long uLL;/** Constant List .. **/ //{const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const DB EPS = 1e-9;const DB OO = 1e20;const DB PI = acos(-1.0); //M_PI;int main(){ #ifdef DoubleQ freopen("in.txt","r",stdin); #endif LL n; while(~scanf("%lld",&n)) { LL c = n / 2; if(n % 2 != 0) { c += 1; printf("-"); } printf("%lld\n" , c); }}