HDU 1005 Number Sequence
2013-07-21 18:22
549 查看
题目链接:Number Sequence
解题思路:矩阵幂就可以实现,注意n为1或者2的时候要特判一下。
解题思路:矩阵幂就可以实现,注意n为1或者2的时候要特判一下。
#include<stdio.h> #include<string.h> __int64 ans[2][2], tem[2][2]; void mutl(__int64 a[2][2],__int64 b[2][2]){ __int64 c[2][2]; int i, j, k; memset(c, 0, sizeof(c)); for(i = 0; i < 2; i++){ for(j = 0; j < 2 ;j++){ for(k = 0; k < 2; k++){ c[i][j] = (((a[i][k] * b[k][j] + c[i][j]) % 7) + 7) % 7; } } } for(i = 0; i < 2; i++){ for(j = 0; j < 2; j++){ a[i][j] = c[i][j]; } } } int main(){ int a, b, n; while(scanf("%d%d%d", &a, &b, &n) && (a || b || n)){ if(n == 1 || n == 2){ printf("1\n"); continue; } n -= 2; memset(ans, 0, sizeof(ans)); ans[0][0] = ans[1][1] = tem[1][0] = 1; tem[0][0] = a; tem[0][1] = b; tem[1][1] = 0; while(n){ if(n & 1){ mutl(ans, tem); } n >>= 1; mutl(tem, tem); } printf("%I64d\n", (((ans[0][0] + ans[0][1]) % 7) + 7) % 7); } return 0; }
相关文章推荐
- HDU 1005 Number Sequence 找循环区间的长度
- HDU_1005_Number Sequence
- HDU--1005--Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】
- HDU 1005 Number Sequence 水题 规律题
- HDU 1005 Number Sequence
- 51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence(矩阵)
- hdu 1005 Number Sequence(找规律)
- 1005 Number Sequence(HDU)
- HDU 1005 Number Sequence 矩阵乘法 Fib数列
- HDU 1005 Number Sequence
- HDU_1005 Number Sequence
- hdu 1005 Number Sequence(思维题)
- HDU 1005 Number Sequence
- hdu 1005——Number Sequence
- HDU 1005 Number Sequence