HDOJ-ACM1005(JAVA)
转载声明:原文转自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)的更多相关文章
- hdoj 1753 (Java)
刚刚开始用Java,代码难免不够简洁. import java.math.BigDecimal; import java.util.Scanner; public class Main { publi ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)
Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...
- HDOJ(HDU) 2192 MagicBuilding(用Java的Map做了下)
Problem Description As the increase of population, the living space for people is becoming smaller a ...
- 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 ...
- hdoj 1753 大明A+B 高精度/java
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 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) ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- HDOJ 1326. Box of Bricks 纯水题
Box of Bricks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
随机推荐
- Java注释模板
/** * * 项目名称:${project_name} * 类名称:${type_name} * 类描述: * 创建人:${user} * 创建时间:${date} ${t ...
- 【Firefly API 新版文档】Package dbentrust
原地址:http://blog.csdn.net/uxqclm/article/details/11969653 该包下面主要是数据库的处理与memcached存储.里面封装了,从memcached数 ...
- ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
点我看题目 题意 : 给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程就是成语接龙,后一个成语的第一个字必须有前一个成语的最后一个字相等,给定的 ...
- HDU3400+三分
三分出两个中间的位置即可. /* 两次三分 */ #include<stdio.h> #include<string.h> #include<stdlib.h> # ...
- MySQL表结构为InnoDB类型从ibd文件恢复数据
客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: ...
- iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)
iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建) 一.UITabBarController在storyoard中得搭建 1.新建一个项目,把storyb ...
- cocos2d-html5 Layer 和 Scene 创建模式
var myLayer = cc.Layer.extend({ init:function() {//2 界面 var bRet = false; if (this._super()) { bRet ...
- 这些小众软件让你的效率提升N倍!(必备,收藏)
大部分的我们,电脑买来之后,软件越装越多,电脑越来越卡,导致工作的效率也是越来越低. 同时还可能长期处于软件安装完又卸载的无限恶性循环中.提高工作效率是我们利用电脑办公的一大优势,安装好的软件更是可以 ...
- 《linux程序设计》笔记 第一章 入门
linux程序存放位置linux主要有一下几个存放程序的目录: /bin 系统启动程序目录 /usr/bin 用户使用的标准程序 /usr/local/bin 用于存放软件安装目录 /usr ...
- IIS由于无法创建应用程序域,因此未能执行请求。错误: 0x80070005 拒绝访问
网站静态页面(.html)是可以访问的,但是动态页面(.aspx)就出错了. 服务器上还有其他网站,但是都可以正常浏览,这就说明不是IIS本身有问题了,问题应该出在网站本身. 百度后,都说是权限问题, ...