转载声明:原文转自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. Python中使用ElementTree解析xml

    在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...

  2. hdu 3591 The trouble of Xiaoqian

    hdu 3591  The trouble of Xiaoqian 题意:xiaoqi要买一个T元的东西,当前的货币有N种,xiaoqi对于每种货币有Ci个:题中定义了最小数量即xiaoqi拿去买东西 ...

  3. 【方言】Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

    Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 几种 方言配置差异 <?xml v ...

  4. Java琐记

    svn项目倒入,所选的文件夹一定是src上面以及的:然后eclipse会自动创建一个项目,项目名称就是src上级文件夹的名称:然后会按照路径下的文档结构如导入到eclipse的结构中: 被标记为// ...

  5. 解决在构造函数中使用Session,Session为null的问题

    问题描述: public abstract class PageBase : System.Web.UI.Page 在PageBase中如何使用Session??? 我直接用 Session[&quo ...

  6. 冒泡排序BubbleSort

    /** * * @author Administrator * 功能:交换式排序之冒泡排序 */ package com.test1; import java.util.Calendar; publi ...

  7. virsh console使用方法

    How to use virsh console virsh 是libvirt 开源函数库中的一个命令行工具,用来在命令行下通过libvirt发布管理虚拟机的各种命令,现在介绍一下其中一个命令的使用方 ...

  8. FileSystemWatcher使用方法

    FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建.删除.改动.重命名等活动.可以动态地定义需要监控的文件类型及文件属性改动的类型. 1.常用的几个基本属性: (1) P ...

  9. 【原创】MIPS中断系统的板级验证及实例测试

    “五一”假期前后这约五天时间,终于将MIPS中断系统进行了板级验证及实例测试.因为老师给的交叉编译工具不会用,所以测试代码完全用MIPS汇编编写.使用MARS而没有用QtSpim,其实我觉得SPIM这 ...

  10. 错误信息:A TCP error (10013: 以一种访问权限不允许的方式做了一个访问套接字的尝试。) occurred while listening on IP Endpoint=192.168.1.18:8002.

    百度之后,知道这个原因是端口已经被其他进程打开了 使用cmd命令,查看8002端口被哪一个程序占用了 C:\Windows\System32>netstat -ano | find " ...