| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
新手请问1350为什么老是wa,用的javaimport java.util.ArrayList;
import java.util.Scanner;
class Cabric
{
//顺序冒泡
private void bubbleSort(int[] data)
{
//比较的轮数
for (int i = 1; i < data.length; i++)
{
//将相邻两个数进行比较,较大的数往后冒泡
for (int j = 0; j < data.length - i; j++)
{
if (data[j] > data[j + 1])
{
//交换相邻两个数
swap(data, j, j + 1);
}
}
}
}
private void swap(int[] data, int x, int y)
{
int temp = data[x];
data[x] = data[y];
data[y] = temp;
}
//num位数不定
public int getMaxandMin(int num)
{
int []data = new int[4];
//data 元素可能为0
data[0] = num / 1000;
data[1] = (num-data[0]*1000) / 100;
data[2] = (num-data[0]*1000-data[1]*100)/10;
data[3] = num-data[0]*1000-data[1]*100-data[2]*10;
int digit=0,smallNum=0,bigNum=0,temp=0;
if(data[0] != 0)
digit = 4;
else if(data[1] != 0)
digit = 3;
else if(data[2] != 0)
digit = 2;
else if(data[3] != 0)
digit = 1;
bubbleSort(data);//按从小到大排序
smallNum = 1000*data[0] + 100*data[1] + 10*data[2] + 1*data[3];
//bigNum = ((int)Math.pow(10,digit-1))*data[3];//double转为int
//bigNum = (Integer.parseInt(Math.pow(10,digit-1)))*data[3];
bigNum = ((int)Math.pow(10,digit-1))*data[3] + ((int)Math.pow(10,digit-2))*data[2] + ((int)Math.pow(10,digit-3))*data[1] + ((int)Math.pow(10,digit-4))*data[0];//可解决首位为0的问题
temp = bigNum - smallNum;
System.out.println(bigNum + "-" + smallNum + "=" + temp);
return temp;
}
}
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> array = new ArrayList<Integer>();//将输入的数存入array
while(true)
{
int num = scanner.nextInt();
if(num == -1) break;
array.add(num);
}
//System.out.println("array.size()="+array.size());
int temp = 0;
Cabric obj = new Cabric();
for(int k = 0; k < array.size(); k++)
{
temp = (Integer)array.get(k);
System.out.println("N="+ temp + ":");
if(temp < 1000 || temp >= 10000 || temp % 1111 == 0)
System.out.println("No!!");
else
{
for(int i = 1; ; i++)
{
temp = obj.getMaxandMin(temp);//循环,直到结果为0或6174
if(temp == 0 || temp == 6174)
{
if(i == 1) System.out.println("OK!! " + i + " time");//这个去掉也是wrong answer
else System.out.println("OK!! " + i + " times");
break;
}
}
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator