Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>using namespace std;int main(){int n, x, y;scanf("%d %d %d",&n,&x,&y);int flag = 1, temp; //曲线走势为顺时针时flag为1,走势为逆时针时flag为0long long num = 0, N;for (int i = n; i >= 1; i--){N = 1<<(i-1);if (x <= N){if (y <= N) //p点落在1区{num += (1 - flag) * 3 * N*N;temp = y;y = x;x = N + 1 - temp;flag = 1 - flag;}else //p点落在2区{num += (flag + (1 - flag) * 2)*N*N;y -= N;}}else