http://oj.ecustacm.cn/problem.php?id=1369
题目太难懂了。
题目给的意思就是 1行 32个数 即 32 个字节 2个字节一行 16行转换成二进制 01矩阵构成一个汉字。
简言之将32个数字转换成 16*16的01矩阵。 它构成一个字。
我们解密出这十个字代表啥? 然后求解。
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
string a,b;
int a1,a2;
void f(int m,int n)
{
if(m>=0)//大于0
{
for(int i=0;i<7;i++)
{
if(m>>i&1) a[7-i]='1';
}
}
else//小于0
{
a[0]='1';
for(int i=0;i<7;i++)
{
if((m+128)>>i&1) a[7-i]='1';
}
}
if(n>=0)
{
for(int i=0;i<7;i++)
{
if(n>>i&1) b[7-i]='1';
}
}
else
{
b[0]='1';
for(int i=0;i<7;i++)
{
if((n+128)>>i&1) b[7-i]='1';//因为 -1除符号位后面的二进制等于 127 -2 126
}
}
}
int main(void)
{
for(int i=0;i<16;i++)
{
for(int j=0;j<16;j++)
{
cin>>a1>>a2;
a="--------";
b="--------";
f(a1,a2);
cout<<a<<b<<endl;
}
cout<<"===================================="<<endl;
}
/*int sum=pow(9,9);387420489
printf("%d\n",sum);*/
return 0;
}
类似于这样。
**