这道题给的数据非常重要 只要注意到了不用大数的除法都可以做
因为除数是有限大的 用整形就能保存下来 然后就简单了 模拟四则运算 很容易就能做出来了 取模也是一样的
下面看代码
#include<cstdio> #include<cstring> #define MAX 1000000 #define LL long long char str[MAX],result[MAX]; void Mod(char *s) { int str_len = strlen(str); int s_len = strlen(s); LL c = 0; for(int i = 0; i < s_len; i++) c =c*10+(s[i]-'0'); LL sum = 0; for(int i = 0; i < str_len; i++) { sum = sum*10 + (str[i] - '0'); if(sum >= c) sum %= c; } printf("%lld\n",sum); } int cmp(char *p,char *q) { if(strlen(p)<strlen(q))return 1; if(strlen(p)>strlen(q))return 0; for(int i = 0; i < strlen(q); i++) if(p[i] > q[i])return 0; else if(p[i] < q[i])return 1; return 0; } void Division(char *s) { int str_len = strlen(str); int s_len = strlen(s); LL c = 0; for(int i = 0; i < s_len; i++) c =c*10+(s[i]-'0'); LL sum = 0; int flag = 0; for(int i = 0; i < str_len; i++) { sum = sum*10 + (str[i] - '0'); if(sum >= c) { flag = 1; printf("%lld",sum/c); sum %=c; } else if(flag) printf("0"); } printf("\n"); } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); #endif // LOCAL char sign,c[15]; while(scanf("%s %c %s",str,&sign,c)!=EOF) { if(sign == '%') { if(cmp(str,c)){puts(str);continue;} if(strcmp(str,c)==0){printf("0\n");continue;} Mod(c); } else { if(cmp(str,c)){printf("0\n");continue;} if(strcmp(str,c) == 0){printf("1\n");continue;} Division(c); } } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。