题意:一个奶牛从(0,0)点开始跳,它只能朝着x轴正向和y轴正向跳,且第i次跳只能跳 2^(i-1)个距离,问你 矩阵((0,0),(A,B))中奶牛能跳到多少个点。
解题思路:你最后发现 每次跳一步的点都在一条斜线上。
解题代码:
1 // File Name: t.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月14日 星期六 13时37分30秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #include<queue> 25 #define LL long long 26 27 using namespace std; 28 int main(){ 29 int n; 30 scanf("%d",&n); 31 int A,B; 32 for(int i = 1;i <= n;i++) 33 { 34 scanf("%d %d",&A,&B); 35 int sum = 1 ; 36 int t = 1; 37 for(int i = 1;i <= A+B ;) 38 { 39 if(i <= A && i <= B) 40 { 41 sum += t*2; 42 }else if(i > A && i <= B) 43 { 44 sum += t*2 - (i - A); 45 }else if(i <= A && i >= B) 46 { 47 sum += t*2 -(i -B); 48 }else{ 49 sum += t*2 -(i-B) - (i-A); 50 } 51 t *= 2; 52 i += t; 53 } 54 printf("%d ",sum); 55 } 56 return 0; 57 }