题目链接: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. c常用函数-sprintf

    sprintf sprinti函数的作用是把一个字符串格式化后输入到另一个字符串中,然后返回写入的·字符数量. Sprinf在用法上和1.2.3节的prinf函数一致,区别是sprintf输出结果到指 ...

  2. 数据库(mysql)基础操作

    DDL(数据定义语言)------>建库,建表 DML(数据操作语言)------>对表中的记录操作增删改查 DQL(数据查询语言)------>对表中的查询操作 DCL(数据控制语 ...

  3. ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)

    最近要搭建新项目,因为还没有用过.net core,所以想用.net core的环境搭建新项目,因为不熟悉.net core的架构,所以就下载了abp项目先了解一下. 因为自己太菜了,下载了模板项目, ...

  4. 【转】Windows下PATH等环境变量详解

    [转]“肖凡的专栏” 博客,请务必保留此出处http://legend2011.blog.51cto.com/3018495/553255 在学习JAVA的过程中,涉及到多个环境变量(environm ...

  5. 阿里云Ubuntu配置jdk+tomcat

    阿里云系统环境:Ubuntu 18.04 64位 ssh远程连接工具:Xshell6(如何连接此处不讨论) 一>java jdk安装及环境配置 ​ 1.更新apt-get命令 apt-get - ...

  6. JMETER学习宝典

    1. 简介 Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序).它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Ja ...

  7. 深入浅出Transformer

    Transformer Transformer是NLP的颠覆者,它创造性地用非序列模型来处理序列化的数据,而且还获得了大成功.更重要的是,NLP真的可以"深度"学习了,各种基于tr ...

  8. 想学好Python,你必须了解Python中的35个关键词

    每种编程语言都会有一些特殊的单词,称为关键词.对待关键词的基本要求是,你在命名的时候要避免与之重复.本文将介绍一下Python中的关键词.关键词不是内置函数或者内置对象类型,虽然在命名的时候同样也最好 ...

  9. java命令行输入参数

    Java命令行输入参数 代码用例:命令行输入参数,并进行加法运算. public class Demo01 { public static void main(String[] args) { for ...

  10. eclipse导入git项目

    复制项目的git路径 Eclipse打开 Git Repostitories 视图 弹出show view窗口 选择ok ,进入git repositories 视图窗口 我这里已经导入从我的git仓 ...