买花(直接取余!)(#)
小雷说,第一次,送两朵花,第二次,送三朵,第三次送的总数是第一次和第二次的乘积,第四次是前两次的乘积......也就是说,第N次送花是第N-1次乘上第N-2次的数目。由于两方面的限制,其一花店里没有那么多花,其二运送大量的花会很麻烦。因此送花的数目有个最大值。即如果要送的花如果超过(大于)1000朵,此次送的花就应该对1000取余数。例如,根据上面的法则计算出来的送花数目是1003,那么这次所送的花就应该是3朵。
小琴听了这个主意后,很是赞赏。但是她想知道在她第N次送花给妈妈时,需要送多少花。数学学得不是很好,请求你为她编一个程序,使她知道第N次她应该送多少花。
INPUT:
输入包含多组数据,每组数据独占一行,仅含一个整数N。N等于0的那组数据表示输入结束。
OUTPUT:
对于每组输入的N,输出第N次小琴应送的花数。每组输出独占一行。
Simple Input
2
5
0
Simple Output
3
108
#include<stdio.h>
int a[500000];
void vSum()
{
int i;
a[1]=2;
a[2]=3;
for(i=3;i<=500000;i++)
a[i]=(a[i-1]*a[i-2])%1000;
}
int main()
{
int n,count;
vSum();
while(scanf("%d",&n)!=EOF)
{
count=a[n]%1000;
if(n==0)
break;
else
printf("%d\n",count);
}
return 0;
}
import java.util.*;
public class Flower {
static void vSum()
{
int i;
a[1]=2;
a[2]=3;
for(i=3;i<500000;i++)
{
a[i]=(a[i-1]*a[i-2])%1000;
}
}
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
int count;
while(cin.hasNext())
{
vSum();
int n=cin.nextInt();
count=a[n]%1000;
if(n==0)
break;
else
System.out.println(count);
}
}
static int[] a=new int[500000];
}