长久不写算法题,这种简单题折腾了一下午。。。
/* ID: yingzho2 LANG: C++ TASK: combo */ #include <iostream> #include <fstream> #include <string> #include <map> #include <vector> #include <set> #include <algorithm> #include <stdio.h> #include <queue> #include <cstring> #include <cmath> #include <list> #include <cstdio> #include <cstdlib> #include <limits> #include <stack> using namespace std; ifstream fin("combo.in"); ofstream fout("combo.out"); int dis(int N, int a, int b) { if (a > b) swap(a, b); return min(b-a, N-b+a); } int main() { int N; ], b[]; fin >> N; ; i < ; i++) fin >> a[i]; ; i < ; i++) fin >> b[i]; , N)*min(, N)*min(, N)*; ; bool flag = false; ; i < ; i++) { ) { sum *= N; flag = true; } ) { sum *= ( - dis(N, a[i], b[i])); flag = true; } } if (flag) ans -= sum; fout << ans << endl; ; }