1. 程式人生 > >【杭電-oj】-1865-1sting(大數斐波那契數列)

【杭電-oj】-1865-1sting(大數斐波那契數列)

1sting

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5021    Accepted Submission(s): 1864


Problem Description You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total number of result you can get.

Input The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.

Output The output contain n lines, each line output the number of result you can get .

Sample Input 3 1 11 11111
Sample Output 1 2 8
Author z.jt 這道題也是斐波那契數列,只是需要用字串把1的個數轉換為n而已。
#include<cstdio>
#include<cstring>
int main()
{
	int t,l,k;
	char a[201];
	int f[1001][211]={0};			//全部初始化為0 
	f[1][1]=1;
	f[2][1]=2;
	for(int i=3;i<=1000;i++)
	{
		for(int j=1;j<=210;j++)			//二維陣列,i表示第幾個數,j表示這個數的第幾位,
		{								// 然後對j進行類似大數相加的運算 
			f[i][j]+=f[i-1][j]+f[i-2][j];
			if(f[i][j]>9)
			{
				f[i][j]-=10;
				f[i][j+1]++;	
			}	
		}	
	}	
	scanf("%d",&t);
	while(t--)
	{
		scanf("%s",a);
		l=strlen(a);
		k=100;
		for( ;f[l][k]==0;k--);			//開始全部初始化為零,直到遇到一個f[n][k]!=0,此時跳出迴圈,開始輸出 
		for( ;k>=1;k--)					//這種倒著輸出不同於之前的倒著輸出,此時不用考慮是否進位,只要不超出範圍即可 
			printf("%d",f[l][k]);
		printf("\n");
	}
	return 0;
} 


相關推薦

-oj-1865-1sting大數數列

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5021    Accepted Submiss

劍指offer面試題9:數列

題目 寫一個函式,輸入n, 求斐波那契數列的第n項。 遞迴 問題規模為: T(n)=T(n−1)+T(n−2) 如果我們估計一下,讓 T(n−1)=T(n−2) 那麼T(n)=2T(n−1) 那麼O(n)=2n 簡介而不高效 long l

1005 Number Sequence廣義數列

Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. G

藍橋杯第四屆 黃金連分數大數 數列與黃金分割

題目描述 標題: 黃金連分數 黃金分割數0.61803... 是個無理數,這個常數十分重要,在許多工程問題中會出現。有時需要把這個數字求得很精確。 對於某些精密工程,常數的精度很重要。也許你聽說過哈

-oj-1008-Elevator電梯

Problem Description The highest building in our city has only one elevator. A request list is made up with N positive numbers. The num

CF446CDZY Loves Fibonacci Numbers 線段樹 + 數列

nac ++ return isp mat span 先來 sum scrip Description ? 看題戳我 給你一個序列,要求支持區間加斐波那契數列和區間求和。\(~n \leq 3 \times 10 ^ 5, ~fib_1 = fib_2 = 1~\). So

TOJ 3600Fibonacci II 對數+通項式

sta jpg 我們 文件 panel 這一 spa eof clas 描述 2007年到來了。經過2006年一年的修煉,數學神童zouyu終於把0到100000000的Fibonacci數列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i&

Java 兔子問題數列擴展篇

aik 第一個 truct func main target htm bre trace Java 兔子問題(斐波那契數列)擴展篇 斐波那契數列指的是這樣一個數列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...對於這個

找一找數列

數列 || amp question 滿足 mil 一個 輸出 family 題目要求:給定n個正整數,請找出其中有多少個數x滿足:在這n個數中存在數y,使y=kx,其中k為大於1的整數 輸入描述 : 第一行輸入一個n,接下來一行輸入n個正整數ai 輸出描述:輸出符合條件個

Java中的不死神兔數列

三種方法實現例項: package test17_digui; import java.util.Scanner; /* * 題目:有一對兔子,從出生後第3個月起每個月都生1對兔子,小兔子第三個月後也可以生一對兔子, * 假如兔子不死,在指定月份時刻一共可以有多少對兔子 *

java:遞迴練習數列

package com.heima.test; public class Test5 { public static void main(String[] args) { demo1(); System.out.println(fun(8)); } //使用陣列求斐波那契數列

兔子的繁殖問題數列

Problem A: 兔子的繁殖問題 假設一對兔子每月能生一對小兔(一雌一雄),每對小兔出生後的下一個月是沒有繁殖能力的,至出生後的第三個月開始又可以每月生一對小兔,問從一對剛出生的小兔開始,經過若干個月後一共有多少兔子(假設在此過程中兔子沒有死亡)? 這個問題

codeforces316E3 Summer Homework線段樹,數列

pan hang 題目 using queue main scanf spa 維護 題目大意 給定一個n個數的數列,m個操作,有三種操作: \(1\ x\ v\) 將\(a_x\)的值修改成v \(2\ l\ r\\) 求 \(\sum_{i=l}^r x_i*f_{i-

矩陣快速冪數列為例

小 M 玩數列 【問題描述】 小 W 發現了一個神奇的數列: () = ( − 1) + ( − 2) { ≥ 3, (1) = 1, (2) = 1} ,這就是著名的 Fibonacci Se

再刷PAT系列~ 1008 童年生活二三事數列

題目描述 NowCoder小時候走路喜歡蹦蹦跳跳,他最喜歡在樓梯上跳來跳去。 但年幼的他一次只能走上一階或者一下子蹦上兩階。 現在一共有N階臺階,請你計算一下NowCoder從第0階到第N階共有幾

極值問題-數列

已知m、n為整數,且滿足下列兩個條件: ① m、n∈{1,2,…,k},即1≤m,n≤k ②(n2-m*n-m2)2=1 你的任務是:程式設計輸入正整數k(1≤k≤109),求一組滿足上述兩個條件的m、n,並且使m2+n2的值最大。例如,從鍵盤輸入k=199

不死兔數列

public static void main(String[] args) { /** * 需求:有一對兔子,從出生後第3個月起每個月都生一對兔子, * 小兔子長到第三個月後每個月又生一對兔子, * 假如兔子都不死,問第二十個月的兔子對數為多少? *

fibonacii數列數列的遞迴實現及迴圈實現

public class Fibonacii { public static long fibo(int num){ //遞迴方法 if(num==1||num==2) //定義出口 return 1; return fibo(num-1)+fibo(

劍指Offerjava+第九題,數列

思路   如果直接寫遞迴函式,由於會出現很多重複計算,效率非常底,不採用。   要避免重複計算,採用從下往上計算,可以把計算過了的儲存起來,下次要計算時就不必重複計算了:先由f(0)和f(1)計算f(2),再由f(1)和f(2)計算f(3)……以此類推就行了,計算第n個時,只要儲存第n-1和

hdu 2046 骨牌鋪方格遞推 數列

骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To