| ||||||||||
| 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 | |||||||||
贴代码,一定要判断循环次数<65536啊,坑死了.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a,b,c,s,s1,s2;
while(true) {
a = sc.nextInt();
if(a == 0)
return;
b = sc.nextInt();
c = sc.nextInt();
s = sc.nextInt();
s1 = s;
int and1=s;
int or1=s;
int i = 0;
while(true){
i ++;
s1 = (a*s1+b)%c;
and1 = and1&s1;
or1 = or1|s1;
if(s1 == s||i>65537) {
int not = and1^or1;
String ret =Integer.toBinaryString(not);
replaceOne(s,ret);
break;
}
s2 = s1;
s2 = (a*s2+b)%c;
if(s1==s2 || i>65537){
int not = and1^or1;
String ret =Integer.toBinaryString(not);
replaceOne(s,ret);
break;
}
}
}
}
private static void replaceOne(int src,String rep){
String str = Integer.toBinaryString(src);
str = appendZ(str.length())+str;
char[] array = str.toCharArray();
int length = array.length - rep.length();
for (int i = rep.length()-1; i >=0 ; i--) {
if(rep.charAt(i)=='1')
array[length+i]='?';
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
}
System.out.println();
}
private static String appendZ(int length){
length = 16-length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append("0");
}
return sb.toString();
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator