题目链接:Round and Round We Go

解题思路:用程序实现一个乘法功能,将给定的字符串依次做旋转,然后进行比较。由于题目比较简单,所以不做过多的详解。

具体算法(java版,可以直接AC)

 import java.util.Scanner;

 public class Main {

     public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line;
while (scanner.hasNext()) {
line = scanner.next();
MyNumber number = new MyNumber(line);
int count = 0;
for (int i = 2; i <= line.length(); i++) {
NumNode[] result = number.multiply(i);
if (number.isCycle(result)) {
count++;
}
}
if (count == line.length()-1) {
System.out.println(line + " is cyclic");
} else {
System.out.println(line + " is not cyclic");
}
}
} } class NumNode {
int value;
int carry; public NumNode() {
this.value = 0;
this.carry = 0;
} } class MyNumber {
private NumNode[] data;
private int length;
private String[] rotation;
private boolean isRotated; public MyNumber(String line) {
this.length = line.length();
this.isRotated=false;
this.data = new NumNode[this.length];
this.rotation = new String[this.length];
for (int i = this.length - 1; i >= 0; i--) {
this.data[i] = new NumNode();
this.data[i].value = line.charAt(i) - '0';
}
} private void rotate() {
for (int i = 0; i < this.length; i++) {
StringBuffer buffer = new StringBuffer();
for (int j = i; j < this.length; j++) {
buffer.append(this.data[j].value);
}
for (int j = 0; j < i; j++) {
buffer.append(this.data[j].value);
}
this.rotation[i] = buffer.toString();
}
} public NumNode[] multiply(int a) {
NumNode[] result = new NumNode[this.length];
for (int i = this.length - 1; i >= 0; i--) {
int value = this.data[i].value * a;
result[i] = new NumNode();
if (i + 1 < this.length) {
value += result[i + 1].carry;
}
result[i].value = value % 10;
result[i].carry = value / 10;
}
return result;
} public boolean equals(String s) {
for (String str : this.rotation) {
if (str.equals(s))
return true;
}
return false;
} public boolean isCycle(NumNode[] num) {
if (num[0].carry > 0)
return false;
if(!this.isRotated){
this.rotate();
this.isRotated=true;
}
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < num.length; i++) {
buffer.append(num[i].value);
}
return this.equals(buffer.toString());
} public String toString() {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < this.length; i++) {
buffer.append(this.data[i].value);
}
return buffer.toString();
}
}

POJ 1047 Round and Round We Go 最详细的解题报告的更多相关文章

  1. CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告

    T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...

  2. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

    最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...

  3. Valentine's Day Round 1001.Ferries Wheel(hdu 5174)解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5174 题目意思:给出 n 个人坐的缆车值,假设有 k 个缆车,缆车值 A[i] 需要满足:A[i−1] ...

  4. Codeforces Round #256 (Div. 2/A)/Codeforces448A_Rewards(水题)解题报告

    对于这道水题本人觉得应该应用贪心算法来解这道题: 下面就贴出本人的代码吧: #include<cstdio> #include<iostream> using namespac ...

  5. POJ 1046 Color Me Less 最详细的解题报告

    题目来源:POJ 1046 Color Me Less 题目大意:每一个颜色由R.G.B三部分组成,D=Math.sqrt(Math.pow((left.red - right.red), 2)+ M ...

  6. POJ 1057 File Mapping 最详细的解题报告

    题目来源:POJ 1057 File Mapping 题目大意:像我的电脑那样显示文件夹和文件信息,其中在同一级目录内,文件夹排在文件的前面并且文件夹的顺序不变,同一级目录中文件按字母序排列.文件以‘ ...

  7. POJ 1063 Flip and Shift 最详细的解题报告

    题目来源:Flip and Shift 题目大意:一个椭圆形的环形容器中有黑色和白色两种盘子,问你是否可以将黑色的盘子连续的放在一起.你可以有以下两种操作: 1.顺时针旋转所有的盘子 2.顺时针旋转3 ...

  8. POJ 1050 To the Max 最详细的解题报告

    题目来源:To the Max 题目大意:给定一个N*N的矩阵,求该矩阵中的某一个矩形,该矩形内各元素之和最大,即最大子矩阵问题. 解题方法:最大子序列之和的扩展 解题步骤: 1.定义一个N*N的矩阵 ...

  9. POJ 1095 Trees Made to Order 最详细的解题报告

    题目来源:Trees Made to Order 题目大意:根据下面的规则给一棵二叉树编号: 规则1:如果二叉树为空,则编号为0: 规则2:如果二叉树只有一个节点,则编号为1: 规则3:所有含有m个节 ...

随机推荐

  1. 解决GITLAB无法启动runsv no running

    可以先尝试用 systemctl start gitlab-runsvdir.service 如果冻结不动的话,就需要查看系统服务项了 systemctl -t target 如果系统正常的话,所有任 ...

  2. 快捷键浏览存储过程的内容(执行文中的User Store Proc,设置快捷方式的指向usp_Name)

    虽然不常用,但使用时还是在用传统方法查看存储过程的内容, sp_helptext usp_Name;下面这段执行后可设置快捷查询usp的内容(但是需要在每个数据库下都存在,不能直接在master,并且 ...

  3. matlab实现梯度下降法(Gradient Descent)的一个例子

    在此记录使用matlab作梯度下降法(GD)求函数极值的一个例子: 问题设定: 1. 我们有一个$n$个数据点,每个数据点是一个$d$维的向量,向量组成一个data矩阵$\mathbf{X}\in \ ...

  4. 一个简单的Shell脚本(解决windows上文本在macos上乱码问题)

    之所以有这一篇文章,是因为之前我写过的一篇文章:“解决Mac上打开txt文件乱码问题”:传送门: https://www.cnblogs.com/chester-cs/p/11784079.html ...

  5. beego register db `default`, sql: unknown driver "mysql" (forgotten import?)

    首先先去你的目录下找找这个文件里有没有东西,或者有没有这个文件 如果没有 执行下面两个命令: 下载:go get github.com/Go-SQL-Driver/MySQL 安装:go instal ...

  6. Beta冲刺<10/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第十天(05.28) 作业正文 如下 其他参考文献 ... B ...

  7. Skywalking的存储配置与调优

    https://blog.csdn.net/smooth00/article/details/96479544 作为一款APM和全链路监控平台,Skywalking算是挺出色的.Skywalking是 ...

  8. spring 整合redis集群中使用@autowire无效问题的解决办法

    1.视频参考黑马32期宜立方商城第6课 redis对于的代码 我们先变向一个redis客户端的接口文件 package com.test; public interface JedisClient { ...

  9. Python实用笔记 (23)面向对象高级编程——使用__slots__

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object): pa ...

  10. gdi和gdi+比较

    http://www.360doc.com/content/10/1013/17/1066008_60709410.shtmlhttp://www.360doc.com/content/10/1013 ...