您的位置:首页 > 其它

CSUOJ 1102 多色块拼图(进制转换,脑洞略大)

2014-11-20 11:41 141 查看
RE,暂存。(大概是字符串的处理不对,如果能帮鄙人指正错误,当感激不尽。。)

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

public class Main
{
public static BigInteger get_Value(char Matrix[][], int n, int base)
{
BigInteger ret = BigInteger.ZERO;
for(int i = n - 1; i >= 0; i--)
for(int j = n - 1; j >= 0; j--)
{
ret = ret.multiply(BigInteger.valueOf(base));
if(Matrix[i][j] ==  '*')
ret = ret.add(BigInteger.ONE);
}
return ret;
}
public static void main(String[] args) //throws Exception
{
//FileInputStream fp = new FileInputStream("1102.in");
//System.setIn(fp);

Scanner cin = new Scanner(new BufferedInputStream(System.in));
while(true)
{
int n = cin.nextInt();
int m = cin.nextInt();

if(n == 0 && m == 0)
break;

char[][] Board = new char[20][20];
char[][] Piece = new char[20][20];
String add = "";

for(int i = m; i < n; i++)
add = add + ".";
for(int i = 0; i < n; i++)
Board[i] = cin.next().toCharArray();
for(int i = 0; i < m; i++)
Piece[i] = (cin.next() + add).toCharArray();

BigInteger checkBoard_1 = get_Value(Board, n, 2);
BigInteger checkBoard_2 = get_Value(Board, n, 3);
BigInteger checkPiece_1 = get_Value(Piece, n, 2);
BigInteger checkPiece_2 = get_Value(Piece, n, 3);

if(checkPiece_1.compareTo(BigInteger.ZERO) == 0 || checkPiece_2.compareTo(BigInteger.ZERO) == 0)
System.out.println(0);
else if((checkBoard_1.remainder(checkPiece_1).compareTo(BigInteger.ZERO) == 0) && (checkBoard_2.remainder(checkPiece_2).compareTo(BigInteger.ZERO) == 0))
System.out.println(1);
else
System.out.println(0);
}
cin.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: