作业帮 > 综合 > 作业

这两道题咋做二进制加法Time Limit:1000MS Memory Limit:65536KTotal Submit

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 06:17:50
这两道题咋做
二进制加法
Time Limit:1000MS Memory Limit:65536K
Total Submit:394 Accepted:129
Description
二进制是逢2进位的进位制,0、1是基本算符.现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现.二进制运算在所有类型的计算机中都是最基本的运算.
二进制加法与十进制加法不同的是逢2进1.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
1 + 1 + 1 = 11
根据以上运算法则来计算两个二进制数相加的和.
Input
第一行为第一个二进制数.
第二行为第二个二进制数.
这两个二进制数都不会超过30个二进制位,并且不会是以0开头的非零数.
Output
输出这两个二进制数的和( 也用二进制数表示出来 ).
Sample Input
1000100
1001010
Sample Output
10001110
Source
还有这个求简单算法不能超时
素数回文
Time Limit:2000MS Memory Limit:65536K
Total Submit:2173 Accepted:544
Description
小明对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在小明想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5
第一题
#include
int getval(char s[])
{
\x09int ret=0,i;
\x09for(i=0;s[i];i++)
\x09\x09ret=ret*2+s[i]-'0';
\x09return ret;
}
void out(int n)
{
\x09if(n>0)
\x09{
\x09\x09out(n/2);
\x09\x09printf("%d",n%2);
\x09}
}
int main()
{
\x09char s[100];
\x09int a,b;
\x09while(scanf("%s",s)!=EOF)
\x09{
\x09\x09a=getval(s);//把二进制转化成十进制
\x09\x09scanf("%s",s);
\x09\x09b=getval(s);
\x09\x09a+=b;
\x09\x09if(a==0)
\x09\x09{
\x09\x09\x09puts("0");
\x09\x09}
\x09\x09else
\x09\x09{
\x09\x09\x09out(a);//十进制转二进制
\x09\x09\x09puts("");
\x09\x09}
\x09}
return 0;
}
第二题
#include
#include
using namespace std;
const int MAX=100000001;
int p[100002];
int split(int bit[],int n)
{
\x09int len=0;
\x09for(len=0;n>0;len++,n/=10)
\x09\x09bit[len]=n%10;
\x09return len;
}
int getval(int n,int s)
{
\x09int bit[100];
\x09int len=split(bit,n),i;
\x09for(i=s;i=MAX)break;
\x09\x09if(a