Posted: Mon Nov 24, 2003 1:33 pm
my god.i've tried it for about 1 month and get WA.do u guess the problem itself has problems?
[java]
import java.io.*;
import java.util.*;
class Main
{
static String ReadLn (int maxLg) // utility function to read from stdin
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
{
car = System.in.read();
if ((car < 0) || (car == '\n')) break;
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
if ((car < 0) && (lg == 0)) return (null); // eof
return (new String (lin, 0, lg));
}
public static void main (String args[]) // entry point from OS
{
Main myWork = new Main(); // create a dinamic instance
myWork.Begin(); // the true entry point
}
void Begin()
{
int loop;
double a,b;
int length1=0;
int length2=0;
int times=0;
boolean add=false;
byte [] num1;
byte [] num2;
StringTokenizer idata;
String aLine="";
byte [] array=new byte[255];
while ((aLine = Main.ReadLn (255)) != null)
{
times=0;
add=false;
length1=length2=0;
idata = new StringTokenizer (aLine);
a = Double.parseDouble(idata.nextToken());
b = Double.parseDouble(idata.nextToken());
if((a==b)&&(a==0)) break;
for(loop=0;loop<aLine.length();loop++)
{
if(aLine.charAt(loop)==' ')
{
length1=loop;
break;
}
}
length2=aLine.length()-length1-2;
for(loop=0;loop<aLine.length();loop++)
{
array[loop]=0;
array[loop]+=aLine.charAt(loop);
}
String number1= new String (array,0,length1);
String number2= new String (array,length1+1,length2);
if(number1.length()>=number2.length())
{
num1=new byte[number1.length()];
num2=new byte[number2.length()];
for(loop=0;loop<number1.length();loop++)
{
num1[loop]=(byte)(number1.charAt(loop)-48);
}
for(loop=0;loop<number2.length();loop++)
{
num2[loop]=(byte)(number2.charAt(loop)-48);
}
for(loop=number2.length()-1;loop>=0;loop--)
{
if (add==false)
{
if(num1[loop+number1.length()-number2.length()]+num2[loop]>9)
{
add=true;
times+=1;
}
}
else
{
if(num1[loop+number1.length()-number2.length()]+num2[loop]>8)
{
add=true;
times+=1;
}
else add=false;
}
}
if(number1.length()!=number2.length())
{
if(add)
{
for(;loop+number1.length()-number2.length()>=0;loop--)
{
if (num1[loop+number1.length()-number2.length()]+1>9) times+=1;
else break;
}
}
}
}
else //when the first number is less than the second
{
num1=new byte[number2.length()];
num2=new byte[number1.length()];
for(loop=0;loop<number2.length();loop++)
{
num1[loop]=(byte)(number2.charAt(loop)-48);
}
for(loop=0;loop<number1.length();loop++)
{
num2[loop]=(byte)(number1.charAt(loop)-48);
}
for(loop=number1.length()-1;loop>=0;loop--)
{
if (add==false)
{
if(num1[loop+number2.length()-number1.length()]+num2[loop]>9)
{
add=true;
times+=1;
}
}
else
{
if(num1[loop+number2.length()-number1.length()]+num2[loop]>8)
{
add=true;
times+=1;
}
else add=false;
}
}
if(number1.length()!=number2.length())
{
if(add)
{
for(;loop+number2.length()-number1.length()>=0;loop--)
{
if (num1[loop+number2.length()-number1.length()]+1>9) times+=1;
else break;
}
}
}
}
if(times==0) System.out.println("No carry operation.");
else if(times==1) System.out.println("1 carry operation.");
else System.out.println(times+" carry operations.");
}
}
}
[/java]
[java]
import java.io.*;
import java.util.*;
class Main
{
static String ReadLn (int maxLg) // utility function to read from stdin
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
{
car = System.in.read();
if ((car < 0) || (car == '\n')) break;
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
if ((car < 0) && (lg == 0)) return (null); // eof
return (new String (lin, 0, lg));
}
public static void main (String args[]) // entry point from OS
{
Main myWork = new Main(); // create a dinamic instance
myWork.Begin(); // the true entry point
}
void Begin()
{
int loop;
double a,b;
int length1=0;
int length2=0;
int times=0;
boolean add=false;
byte [] num1;
byte [] num2;
StringTokenizer idata;
String aLine="";
byte [] array=new byte[255];
while ((aLine = Main.ReadLn (255)) != null)
{
times=0;
add=false;
length1=length2=0;
idata = new StringTokenizer (aLine);
a = Double.parseDouble(idata.nextToken());
b = Double.parseDouble(idata.nextToken());
if((a==b)&&(a==0)) break;
for(loop=0;loop<aLine.length();loop++)
{
if(aLine.charAt(loop)==' ')
{
length1=loop;
break;
}
}
length2=aLine.length()-length1-2;
for(loop=0;loop<aLine.length();loop++)
{
array[loop]=0;
array[loop]+=aLine.charAt(loop);
}
String number1= new String (array,0,length1);
String number2= new String (array,length1+1,length2);
if(number1.length()>=number2.length())
{
num1=new byte[number1.length()];
num2=new byte[number2.length()];
for(loop=0;loop<number1.length();loop++)
{
num1[loop]=(byte)(number1.charAt(loop)-48);
}
for(loop=0;loop<number2.length();loop++)
{
num2[loop]=(byte)(number2.charAt(loop)-48);
}
for(loop=number2.length()-1;loop>=0;loop--)
{
if (add==false)
{
if(num1[loop+number1.length()-number2.length()]+num2[loop]>9)
{
add=true;
times+=1;
}
}
else
{
if(num1[loop+number1.length()-number2.length()]+num2[loop]>8)
{
add=true;
times+=1;
}
else add=false;
}
}
if(number1.length()!=number2.length())
{
if(add)
{
for(;loop+number1.length()-number2.length()>=0;loop--)
{
if (num1[loop+number1.length()-number2.length()]+1>9) times+=1;
else break;
}
}
}
}
else //when the first number is less than the second
{
num1=new byte[number2.length()];
num2=new byte[number1.length()];
for(loop=0;loop<number2.length();loop++)
{
num1[loop]=(byte)(number2.charAt(loop)-48);
}
for(loop=0;loop<number1.length();loop++)
{
num2[loop]=(byte)(number1.charAt(loop)-48);
}
for(loop=number1.length()-1;loop>=0;loop--)
{
if (add==false)
{
if(num1[loop+number2.length()-number1.length()]+num2[loop]>9)
{
add=true;
times+=1;
}
}
else
{
if(num1[loop+number2.length()-number1.length()]+num2[loop]>8)
{
add=true;
times+=1;
}
else add=false;
}
}
if(number1.length()!=number2.length())
{
if(add)
{
for(;loop+number2.length()-number1.length()>=0;loop--)
{
if (num1[loop+number2.length()-number1.length()]+1>9) times+=1;
else break;
}
}
}
}
if(times==0) System.out.println("No carry operation.");
else if(times==1) System.out.println("1 carry operation.");
else System.out.println(times+" carry operations.");
}
}
}
[/java]