文章

4

粉丝

422

获赞

14

访问

45.4k

头像
求助,弄了一下午没弄出来。
P1176 清华大学上机题
发布于2020年3月29日 19:40
阅读数 10.7k

我采用的是每转换出一位二进制数,就把他转换为二进制逆序数。我把AC的答案下下来在Dev c++上对比了一些数没有问题,但提交就报wrong answer。帮忙看一下有什么问题吗?

#include<bits/stdc++.h>
using namespace std;

int mul (char *s, int l, int two){//转换为二进制逆序数 
	int num =0, temp = 0;
	num = (s[0] - '0') * 2 + two;
//	printf("a[0]:%d,num:%d\n", s[0] - '0', num);
	temp = num / 10;
//	printf("temp%d: %d\n", 0, temp); 
	s[0] = '0' + (num % 10);
//	printf("s[0]:%c\n", s[0]);
	
	for(int i = 1; i < l; ++i){
		num = temp + ((s[i] - '0') * 2);
//		printf("a[%d]:%d,num:%d\n", i, s[i] - '0', num);
		temp = num / 10;
//		printf("temp%d: %d\n", i, temp); 
		s[i] = '0' + (num % 10);
//		printf("s[%d]:%c\n", i, s[i]);
	}
	if (temp != 0){
	s[l++] = '0' + temp;	
//	printf("s[%d]:%c\n", l - 1, s[l - 1]);
	}
//	printf("\n\n");
	return l;
}

int div (char *s, int l, int begin){//输入数除以二 
	int count_zero = 0, num = 0, temp = 0;
	for(int i = begin; i < l; ++i){
		num = temp + (s[i] - '0');
		temp = num % 2 * 10;
		s[i] = '0' + (num /...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发