`
niyayu
  • 浏览: 32901 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多
小雷说,第一次,送两朵花,第二次,送三朵,第三次送的总数是第一次和第二次的乘积,第四次是前两次的乘积......也就是说,第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];
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics