ZOJ ACM 1314(JAVA)
昨天做了几个题目。过于简单,就不在博客里面写了。
1314这道题也比較简单,写出来是由于我认为在这里有一个小技巧,对于时间复杂度和空间复杂度都比較节省。
这个题目类似哈希表的求解。可是更简单。刚拿到题目时,我想当然的希望将查询结果放到一个数组里面。然后遍历查询是否有一样的mod值。可是感觉这样肯定是最普遍的方法并且效率也不是太高。
后来想到了其它的一些查询算法,比方二分,可是都感觉不太合适。
直到我意识到这个过程和计算哈希表的过程类似,所以直接用mod值作为数组的下标索引。能够直接定位到当前值是否已经被计算过,从而高速推断是否一个好循环。
public class Main { public static void main(String argv[]) {
int Step, Mod;
java.util.Scanner scanner = new java.util.Scanner(System.in);
while(scanner.hasNext()) {
String strLine = scanner.nextLine();
String strNums[] = strLine.split(" ");
Step = Integer.parseInt(strNums[0]);
Mod = Integer.parseInt(strNums[1]); int mods[] = new int[Mod];
mods[0] = 0;
int seed = 0;
String strResult = "Good Choice";
for(int i=1;i<Mod;i++) {
seed = (seed + Step) % Mod;
if(mods[seed] == 0 && seed != 0) {
mods[seed] = seed;
}
else {
strResult = "Bad Choice";
break;
}
}
System.out.format("%10s", Step);
System.out.format("%10s", Mod);
System.out.println(" "+strResult+"\n");
}
}
}
ZOJ ACM 1314(JAVA)的更多相关文章
- ZOJ ACM 1204 (JAVA)
毕业好几年了,对算法还是比較有兴趣,所以想又一次開始做ACM题.俺做题比較任意,一般先挑通过率高的题来做. 第1204题,详细描写叙述请參考,ZOJ ACM 1204 1)难度分析 这个题目,基本的难 ...
- ACM之Java速成(4)
ACM中Java.进制转换 Java进制转换: 由于Unicode兼容ASCII(0-255),因此,上面得到的Unicode就是ASCII. java中进行二进制,八进制,十六进制,十进制间进行相互 ...
- ACM之Java速成(3)
ACM中Java.大数处理 先上个代码: import java.math.*; import java.util.*; class Main{ public static void main(Str ...
- ACM之Java速成(2)
acm中Java的应用 Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
- ACM之Java输入输出
本文转自:ACM之Java输入输出 一.Java之ACM注意点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错 ...
- ACM中java的使用 (转)
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...
- ACM中Java的应用
先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了.Java的语法和C++非常类似, ...
- ACM之Java技巧
一.Java之ACM注意点 关于四舍五入 小数保留几位: DecimalFormat df = new DecimalFormat("0.00"); String num = d ...
随机推荐
- laravel如何利用数据库的形式发送通知
具体实现需要分几步: 1.修改驱动为database; 2.创建database的queue表 3.创建任务sendMessage 4.创建发送逻辑dispatch 5.启动队列 接下来我们进行实操: ...
- 【Spring和SpringMVC】自动扫描注解类的问题
尊重原创原文链接:http://blog.csdn.net/u014277445/article/details/52282697 Spring MVC项目中通常会有二个配置文件,spring-ser ...
- 如何反馈问题issue?
如何反馈问题issue? 01,请提交的时候换位思考一下:如果别人给你提交一个这样的 Issue,你能快速准确的理解吗?如果不能,烦请重新整理你的语言,按照要求的格式填写.专业一点,减少不必要的口舌浪 ...
- bounds 和frame区别
仔细看下这个图就知道了
- IOS UITest 初始化 ViewController
import XCTest @testable import UITestDemo class UITestDemoTests: XCTestCase { var homevc:HomeViewCon ...
- Ext.js数据展示问题name展示code
出现以上问题是因为model中定义的类型跟数据库不匹配 去掉js中vehicleModel的type或者改为type:'int'即可.
- Matplotlib基本图形之条形图2
Matplotlib基本图形之条形图2 1.绘制多条条形图 示例代码: import time import numpy as np import matplotlib.pyplot as plt b ...
- TOJ 2353: Billiard
数学?计算几何?物理?这个还是很轻松的. 353: Billiard Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KBy ...
- Luogu【P3609】蹄子剪刀布(DP+滚动数组)
题目链接 (突然高兴 又一次瞬间想出转移方程并一遍A掉!!233333(虽然从二叉苹果树那题开始我就发现我的方程好像跟别人不大一样 (所以这样就可以名正言顺的水题解了 设f[i][j][k]表示考虑F ...
- 【(好题)组合数+Lucas定理+公式递推(lowbit+滚动数组)+打表找规律】2017多校训练七 HDU 6129 Just do it
http://acm.hdu.edu.cn/showproblem.php?pid=6129 [题意] 对于一个长度为n的序列a,我们可以计算b[i]=a1^a2^......^ai,这样得到序列b ...