3493 in Java

Problems from Greater New York regional contest

Moderator: Board moderators

3493 in Java

Postby Fynmanwasagenius » Sat May 13, 2006 10:34 pm

Hello,

I'm having real trouble submitting the answer for this problem. I have followed all the Java guidelines, including having the Main class and whatnot, and I'm still getting compile errors. Can anyone versed in submitting problems to the Archive in java please help me? This here is my solution (revision #10 or something):

<code>
// @JUDGE_ID: 5526OE 3493 Java

import java.io.*;
import java.util.*;

class Main implements Runnable {
static String readLine(int maxLg) {
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 (Exception e) {
return null;
}

if ((car < 0) && (lg == 0))
return null; // eof

return new String(lin, 0, lg);
}

public static void main(String[] args) {
Main myWork = new Main();
myWork.run();
}

public void run() {
new Binary().run();
}
}

class Binary {
public void run() {
StringTokenizer tk = new StringTokenizer(Main.readLine(255));
int numSets = Integer.parseInt(tk.nextToken());
Set[] sets = new Set[numSets];

for (int i=0; i<numSets; i++) {
tk = new StringTokenizer(Main.readLine(255));
String one = tk.nextToken();
String two = tk.nextToken();

sets[i] = new Set(one, two, (i+1));
}

for (int i=0; i<numSets; i++)
sets[i].print();
}

class Set {
String result;
int order;

Set(String one, String two, int num) {
order = num;
result = "";

int len = one.length();
if (len > two.length()) {
while (one.length() > two.length())
two = "0" + two;
} else if (len < two.length()) {
while (one.length() < two.length())
one = "0" + one;
len = two.length();
}

char[] top = one.toCharArray();
char[] bot = two.toCharArray();

int carryover = 0;
for (int i=len-1; i>=0; i--) {
int sum = Integer.parseInt(
Character.toString(top[i])) +
Integer.parseInt(
Character.toString(bot[i])) +
carryover;

if (sum==0) {
result = "0" + result;
carryover = 0;
} else if (sum==1) {
result = "1" + result;
carryover = 0;
} else if (sum==2) {
result = "0" + result;
carryover = 1;
} else if (sum==3) {
result = "1" + result;
carryover = 1;
}

if (i==0 && carryover == 1)
result = "1" + result;
}
}

void print() {
System.out.println(order + " " + result);
}
}
}
</code>

I appreciate any help, thank you.

Carlos
Fynmanwasagenius
New poster
 
Posts: 1
Joined: Sat May 13, 2006 10:29 pm

Re: 3493 in Java

Postby javier2387 » Sun Aug 23, 2009 8:30 pm

Here is your Code fixed

import java.io.*;
import java.util.*;

class Ejemplo2 {
public 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) {
StringTokenizer tk = new StringTokenizer(ReadLn(255));
int numSets = Integer.parseInt(tk.nextToken());
Set[] sets = new Set[numSets];

for (int i=0; i<numSets; i++) {
tk = new StringTokenizer(ReadLn(255));
String one = tk.nextToken();
String two = tk.nextToken();

sets[i] = new Set(one, two, (i+1));
}

for (int i=0; i<numSets; i++)
sets[i].print();
}
}
class Set {
private String result;
private int order;

public Set(String one, String two, int num) {
order = num;
result = "";

int len = one.length();
if (len > two.length()) {
while (one.length() > two.length())
two = "0" + two;
} else if (len < two.length()) {
while (one.length() < two.length())
one = "0" + one;
len = two.length();
}

char[] top = one.toCharArray();
char[] bot = two.toCharArray();

int carryover = 0;
for (int i=len-1; i>=0; i--) {
int sum = Integer.parseInt(
String.valueOf(top[i])) +
Integer.parseInt(
String.valueOf(bot[i])) +
carryover;

if (sum==0) {
result = "0" + result;
carryover = 0;
} else if (sum==1) {
result = "1" + result;
carryover = 0;
} else if (sum==2) {
result = "0" + result;
carryover = 1;
} else if (sum==3) {
result = "1" + result;
carryover = 1;
}

if (i==0 && carryover == 1)
result = "1" + result;
}
}

public void print() {
System.out.println(order + " " + result);
}
}
javier2387
New poster
 
Posts: 1
Joined: Sun Aug 23, 2009 8:26 pm


Return to Greater New York

Who is online

Users browsing this forum: No registered users and 1 guest

cron