转载声明:原文转自http://www.cnblogs.com/xiezie/p/5502918.html

JAVA语言实现:

拿到题目第一反应是简单地实现递归:

import java.util.*;

import java.io.*;

public class Main{

    public static void main(String[] arg){
Main m = new Main();
Scanner scan = new Scanner(new BufferedInputStream(System.in));
while(scan.hasNextInt()){
int a = scan.nextInt();
int b = scan.nextInt();
int n = scan.nextInt();
if(a==0&&b==0&&n==0){
break;
}
int result = m.f(a,b,n);
System.out.println(result);
}
scan.close();
} public int f(int a, int b ,int n){
int result = 0;
if(n>2){
result = (a*f(a,b,n-1) + b*f(a,b,n-2))%7;
}else{
result = 1;
}
return result;
}
}

在实现时 还是考虑到JVM能够递归的深度,所以报出Memory Limit Exceeded的错误   让我觉得很正常,而且实现上不优雅~

第二次是将递归改为循环  自我感觉良好  结果  报了Time Limit Exceeded的错误

一下让我措手不及~

import java.util.*;

import java.io.*;

public class Main{

    public static void main(String[] arg){
Scanner scan = new Scanner(new BufferedInputStream(System.in));
while(scan.hasNextInt()){
int a = scan.nextInt();
int b = scan.nextInt();
int n = scan.nextInt();
if(a==0&&b==0&&n==0){
break;
}
int result = 1;
int result1 = 1,result2;
if(n>2){
int m = n+1;
for(int i = 3 ; i != m ; i ++ ){
result2 = result1;
result1 = result;
result = (a*result1 + b * result2 )%7;
}
}
System.out.println(result);
}
scan.close();
}

最后还是得分析算法 - -

这个f(n)得出的数字 都在0-6,网上的说法是 A%7,B%7 所以49个数字一个周期

这个有考虑过  但是实现时 还是没去考虑这个 - -  还是太懒~

于是  代码实现上是

import java.util.*;

import java.io.*;

public class Main{

    public static void main(String[] arg){
Scanner scan = new Scanner(new BufferedInputStream(System.in));
while(scan.hasNextInt()){
int a = scan.nextInt();
int b = scan.nextInt();
int n = scan.nextInt();
if(a==0&&b==0&&n==0){
break;
}
int result = 1;
int result1 = 1,result2;
int i = 3;
int m = n%49 + 1;
if(m!=1&&m!=2){ while(i++<m){
result2 = result1;
result1 = result;
result = (a*result1 + b * result2 )%7;
}
}
System.out.println(result);
}
scan.close();
}
}

  

HDOJ-ACM1005(JAVA)的更多相关文章

  1. hdoj 1753 (Java)

    刚刚开始用Java,代码难免不够简洁. import java.math.BigDecimal; import java.util.Scanner; public class Main { publi ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)

    Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...

  4. HDOJ(HDU) 2192 MagicBuilding(用Java的Map做了下)

    Problem Description As the increase of population, the living space for people is becoming smaller a ...

  5. HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)

    Problem Description Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me wha ...

  6. hdoj 1753 大明A+B 高精度/java

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. hdoj 1002 A + B Problem II 高精度 java

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  10. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

随机推荐

  1. 制作Mac OS X Mavericks 安装U盘

    1. 8G+ U盘一个. 2. App Store 下载Maverics到本地(默认会下载到Applications) 2. 打开Mac OS 磁盘工具(Disk Utility),左侧选中U盘,在右 ...

  2. python使用psutil获取服务器信息

    >>> import psutil 获取cpu信息>>> psutil.cpu_times()scputimes(user=128258.38, nice=12.2 ...

  3. 在C#中IEnumerable与IEnumerator

    对于很多刚开始学习C#同学来说经常会遇到IEnumerable这个关键字,enumerate在字典里的解释是列举,枚举,因此可想而知这个关键字肯定是和列举数据有关的操作. public interfa ...

  4. 【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化

    3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...

  5. 仿window阿里旺旺登陆界面,打印机吐纸动画效果-b

    偶然的机会发现window的阿里旺旺的登陆效果蛮有意思的,于是就模仿着做了一下打印机吐纸的动画效果看起来很神奇的东西,实现起来却不难,下面我给大家看下主要的源码. - (void)createUI{ ...

  6. bp神经网络算法

    对于BP神经网络算法,由于之前一直没有应用到项目中,今日偶然之时 进行了学习, 这个算法的基本思路是这样的:不断地迭代优化网络权值,使得输入与输出之间的映射关系与所期望的映射关系一致,利用梯度下降的方 ...

  7. WebKit Web Inspector增加覆盖率分析和类型推断功能

    WebKit中的Web Inspector(Web检查器)主要用于查看页面源代码.实时DOM层次结构.脚本调试.数据收集等,日前增加了两个十分有用的新功能:覆盖率分析和类型推断.覆盖率分析工具能够可视 ...

  8. 李洪强漫谈iOS开发[C语言-016]-变量的作用域

  9. 接口 --- Java

    package com.test2; public class Test { public static void main(String[] args) { // TODO Auto-generat ...

  10. CAN

    CAN Introduction Features Network Topology(CANbus網路架構) MESSAGE TRANSFER(CAN通訊的資料格式) 1.DATA FRAME(資料通 ...