Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

新手请问1350为什么老是wa,用的java

Posted by asanqi2009 at 2009-07-21 20:31:16
import 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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator