您的位置:首页 > 其它

UVa 10494 如果我们重返童年

2014-02-02 22:52 309 查看
/*

* 解题思路:

*      简单的大整数除法和取模运算

* 有前导0问题,注意即可

*/

#include <stdio.h>
#include <string.h>
#define A 1000
char s[ A ] , c[ 5 ] ;
int n;
int len;
void Divide( )
{
int i;
int sum[ A ],flag,total;
long long tmp1 , tmp2;

memset( sum , 0 , sizeof( sum ) );
for( i=0;i<len;i++ )
sum[ i ] = s[ i ] - '0';

tmp1 = tmp2 = 0;
for( i=0;i<len;i++ )
{
tmp1 = 10 * tmp2 + sum[ i ];
sum[ i ] = tmp1 / n ;
tmp2 = tmp1 % n;
}
//printf("%d %d\n",sum[ 0 ] , sum[ 1 ]);
flag = total = 0;
for( i=0;i<len;i++ )
if( !flag && sum[ i ]==0 ) total++;
else break;
for( i=0;i<len-total;i++ )
s[ i ] = ( char )(sum[ i +total ] + '0');
s[ len-total ] = '\0';
if( len - total == 0 )
printf("0\n");
else
printf("%s\n",s);
}
void Mod( )
{
int i;
long long tmp;
tmp = 0;
for( i=0;i<len;i++ )
{
tmp = tmp * 10 + s[ i ] -'0';
tmp %=n;
}
printf("%lld\n",tmp);
}
int main( )
{
int i;
int flag,total;

while( ~scanf("%s%s%d",s,c,&n ) )
{
len = strlen( s );
flag = total = 0;
for( i=0;i<len;i++ )
if( !flag && s[ i ]=='0' ) total++;
else break;
for( i=0;i<len-total;i++ )
s[ i ] = s[ i + total ];
s[ len - total ] = '\0';
len = len-total;
if( c[ 0 ] == '/' )
Divide( );
else
Mod( );
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐