UVALive 6174 Pen Counts 规律
2014-09-27 18:50
381 查看
题目链接:点击打开链接
打一下表就能找到规律了。
打一下表就能找到规律了。
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<vector> using namespace std; typedef long long ll; const int N = 10010 + 2; inline void rd(int &n){ n = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') n *= 10, n += (c - '0'),c = getchar(); } int a ; int solve(int x){ int ans = 0; for(int i = 1; i <= x; i++) { if(i+i+i>x)break; for(int j = i; j <= x; j++) { int z = x - i- j; if(z<j)break; if (i + j > z) { if(j==z || i==j)ans++; else ans += 2; } } } return ans; } int main(){ // freopen("output.txt","w+",stdout); /* for(int i = 3; i < N; i++) a[i] = solve(i); printf("a[%d]={",N); for(int i = 3; i < N; i++) printf("%d,", a[i]); puts("}"); for (int i = 6; i < N; i += 2) printf("%d\n", a[i] - a[i - 2]); */ a[3] = 1; a[4] = 0; a[5] = 1; a[6] = 1; int idx = 0, idy = 0; for (int i = 3; i + 2 < N; i += 2) { a[i + 2] = a[i] + idx; ++ idx; ++ idy; if (idy == 3) { idx -= 2; idy = 0; } } idx = idy = 0; for (int i = 6; i + 2 < N; i += 2) { a[i + 2] = a[i] + idx; ++ idx; ++ idy; if (idy == 3) { idx -= 2; idy = 0; } } int cas, x; scanf("%d", &cas); while (cas -- >0) { scanf("%d",&x); printf("%d ", x); scanf("%d",&x); printf("%d\n", a[x]); } return 0; } /* */
相关文章推荐
- Uva 6174 Pen Counts
- UVALive - 6529 找规律+dp
- UVALive 6862 Triples (找规律 暴力)
- UVALive 6844 Combination(打表找规律)
- UVALive 6270 Edge Case(找规律,大数相加)
- UVaLive 6847 Zeroes (找规律,水题)
- UVALive 5760 Alice and Bob(博弈+记忆化dp or 找规律)
- UVaLive 6602 Counting Lattice Squares (找规律)
- UVALive 7500 Boxes and Balls (规律)
- UVALive 6847 Zeroes(找规律)
- UVALive-8077 Brick Walls 找规律
- UVaLive 7269 Snake Carpet (找规律,模拟)
- UVALive 6345 The Glittering Caves of Aglarond (找规律求最多)
- 【找规律】UVALive - 7045 Last Defence
- UVALive - 6832 Bit String Reordering (找规律)
- UVALive 6847 Zeroes(规律)
- UVALive 7045 Last Defence(找规律)
- 找规律 UVALive 6506 Padovan Sequence
- Beehive UVALive - 7528 (找规律+数学思维)
- UVALive - 7503 Change(规律)