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;
}
* 解题思路:
* 简单的大整数除法和取模运算
* 有前导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;
}
相关文章推荐
- UVA10494-如果我们返回童年
- UVa 10494 如果我们再回童年
- 如果我们注定没结果
- UVA 10494 - If We Were a Child Again(大数与整型相除取整和取余)
- 如果,我们变成回忆
- UVA 10494 If We Were a Child Again 解题报告
- 如果我们的操作系统是ORACLE做的:
- 生于七八十年代,我们的童年是这样的
- 面向对象:如果你刚好喜欢我,而我又喜欢你,那我们就在一起吧。猿来就是你
- UVA 10494 If We Were a Child Again 高精度除法简单版
- 如果我们很努力很努力,只为了过上平常的生活
- UVa 10494 If We Were a Child Again (高精度)
- 如果给JS代码发布正式使用前增加一个编译步骤,我们能做些什么.
- 如果是你你会如何宣告“我们已经被收购了”?
- D-Bus daemon在系统启动时启动,如果我们装两个不同版本的D-Bus呢?
- 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!
- 我们用一个等臂天平来称物体的质量,如果我们要称的物体质量范围在1到40克(整数),请问我们最少需要几块砝码可以完成这项物体质量的称量?
- UVa UVa 10494 - If We Were a Child Again
- 【程序15】TestCompare.java 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上, //先将x与y进行比较,如果x>y则将x与y的值
- 视频 | 马云:如果有天阿里不在了,我们也要为世界留下这三样