题目描述:
代码如下:
//数据结构起步能力自测04
#include <stdio.h>
#include <string.h>
int main ( void )
{
char s[21], s1[22];
gets( s );
int a[10] = {0}, b[10] = {0}, i, len;
len = strlen( s );
for( i = 0; i < len; i++ ){
int temp = s[i] - '0';
a[temp] = 1;
}
int r, d = 0, j = 0;
for( i = len - 1; i >= 0; i-- ){
int temp = s[i] - '0';
temp = temp * 2 + d;
r = temp % 10;
d = temp / 10;
s1[j++] = r + '0';
if( i == 0 && temp > 9 ){
s1[j++] = d + '0';
}
}
s1[j] = '\0';
int len1 = strlen( s1 );
char t;
for( i = 0; i < len1 / 2 ; i++ ){
t = s1[i];
s1[i] = s1[ len1 - 1 - i];
s1[ len1 - 1 - i ] = t;
}
for( i = 0; i < len1; i++ ){
int temp = s1[i] - '0';
b[temp] = 1;
}
int flag = 1;
for( i = 0; i < 10; i++ )
if( a[i] != b[i] ){
flag = 0;
break;
}
if( flag == 1 )
printf( "Yes\n" );
else
printf( "No\n" );
printf( "%s", s1 );
return 0;
}
这道题主要需要解决的核心是用字符串模拟数字乘法的过程。