NYOJ-803 A/B Problem

来源:互联网 发布:mac 单用户模式 u盘 编辑:程序博客网 时间:2024/06/03 17:12
时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

 做了A+B Problem,A/B Problem不是什么问题了吧!

输入
每组测试样例一行,首先一个号码A,中间一个或多个空格,然后一个符号( / 或者 % ),然后又是空格,后面又是一个号码B,A可能会很长,B是一个int范围的数。
输出
输出结果。
样例输入
110 / 10099 % 102147483647 / 21474836472147483646 % 2147483647
样例输出
1912147483646
这个题刚看到我其实不知道怎么写的,除法还好,但不知道怎么取余的,然后去网上看了看,才发现我想复杂了,也不算想复杂,只是没看到B是int类型的,(-__-)b,哎,最后说一句  写程序题,对于我们新手来说套路还是很重要的,多学习一些其他人的套路,是很有必要的。

#include <stdio.h>
#include <string.h>
int main()
{
const int M=1000;
char a[M];
char s;
int b;
while(~scanf("%s %c %d",a,&s,&b))//%s和%c之间必须有空格,没得话就会错
{
int c[M];
memset(c,0,sizeof(c));
int len=strlen(a);
if(s=='/')
{
int flag=0;//判断是否输出答案了,如果没输出答案,就代表A/B==0;这个很容易忘掉
int r=0;
for(int i=0;i<len;i++)
{
r = r*10+a[i]-48;//写博客的时候差点忘了怎么写
c[i] = r/b;
r %= b;
}
for(int i=0;i<len;i++)
{
if(c[i])
{
flag=1;
for(int j=i;j<len;j++)
printf("%d",c[j]);
printf("\n");
break;
}
}
if(!flag)
printf("0\n");
}
else
{
int r=0;
for(int i=0;i<len;i++)
{
r = r*10+a[i]-48;
r %= b;
}
printf("%d\n",r);
}
}
return 0;
}


0 0
原创粉丝点击