买花(直接取余!)(#)

小雷说,第一次,送两朵花,第二次,送三朵,第三次送的总数是第一次和第二次的乘积,第四次是前两次的乘积......也就是说,第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];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值