杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
来源:互联网 发布:你瞒我瞒网络歌手 编辑:程序博客网 时间:2024/05/21 12:04
题意:
有这样一个序列f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.输入三个整数:A,B,N (1 <= A, B <= 1000, 1 <= n <= 100,000,000),求出序列中第N个数是多少。A,B,N同时为0结束。
示例输入:
1 1 3
1 2 10
0 0 0
示例输出:
2
5
解决方案:
f(n)=(A*f(n-1)+B*(f-2))%7,计算过程中A和B的一直没有变,在变的是f(n-1)和f(n-2)。f(n)取决于前两个元素f(n-1),f(n-2),最终的结果与7相模除,f(n-1)的取值范围为[0,6],同样f(n-2)的取值范围也是[0,6],两个数的组合为(0,0),(0,1)(1,1)......(6,6)一共有7*7=49种不同的组合,但A,B的值固定不变,第49个元素之后又会重覆,然后继续下去。所以只要纪录前49个元素的值就可以。
#include<stdio.h>int main(){ int a,b,n,i,arr[49]={1,1}; while(scanf("%d%d%d",&a,&b,&n)&&(a|b|n)) { for(i=2;i<49;i++) arr[i]=(a*arr[i-1]+b*arr[i-2])%7; printf("%d\n",arr[(n-1)%49]);//数组下标从0开始,所以n先减1 } return 0;}
0 0
- 杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
- 【杭电oj】1005 - Number Sequence(找规律)
- 杭电OJ(HDOJ)2041题:超级阶梯(规律递推,Fibonacci)
- 杭电1005 Number Sequence(规律)
- hdoj--1005--Number Sequence(规律题)
- HDOJ 1005 Number Sequence(规律)
- HDOJ 1005 Number Sequence(规律)
- hdoj 1005 number sequence(找规律)
- 递推:Number Sequence(mod找规律)
- HDOJ 1005 Number Sequence规律题
- HDOJ - 1005 - Number Sequence(规律,数学、非常规)
- HDOJ 1005-Number Sequence【规律】
- 杭电OJ 1005:Number Sequence
- 杭电OJ 1005 Number Sequence
- 杭电oj 1005 Number Sequence
- Number Sequence(规律)
- 杭电 1005 Number Sequence()
- Number Sequence(杭电1005)
- Mysql Trigger (可以用作提权)
- JSP命题人错误盘点(持续更新)
- jQuery学习之文档(DOM)操作
- leetcode 字符串交织
- HDU5112 A Curious Matt
- 杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
- 分享一款Metro风格的WPFUI
- 【map&pair】#81 A. Transmigration
- 适合屌丝企业的网络推广方法
- Matlab自定义函数的几种方法
- 如何杀死tomcat进程
- Apache安全配置
- 求最短路径Dijkstra算法C++
- swift_the basics