If We Were a Child Again(大数除法、求余)
Description???????
?
#include <stdio.h> #include <string.h> void chu (char *p,unsigned long long b); void yu (char *p,unsigned long long b); int a[1000000]; int main() { static char str[1000000]; unsigned long long b = 0,t = 0; char c = ' '; while (scanf ("%s",&str) != EOF) { do { c = getchar (); } while (c != '/' && c != '%'); scanf ("%llu",&b); if (c == '/') { chu (str,b); } else if (c == '%') { yu (str,b); } } return 0; } void chu (char *p,unsigned long long b) { int *p1 = a; unsigned long long tmp = b,shang = 0,yu = 0; unsigned long long quan = 1,i = 0; int tf = 1,pritf = 0; while (*p != ' ') { *p1 = (int)(*p - '0'); p1++; p++; } *p1 = 10; p1 = a; while (*p1 != 10) { yu = yu * 10; yu += *p1; shang = yu / b; yu %= b; if (shang != 0 && tf) { printf ("%llu",shang); tf = 0; pritf = 1; }else { if (!tf) printf ("%llu",shang); } p1++; } if (!pritf) printf ("0"); printf ("n"); } void yu (char *p,i = 0; int tf = 1; while (*p != ' ') { *p1 = (int)(*p - '0'); p1++; p++; } *p1 = 10; p1 = a; while (*p1 != 10) { yu = yu * 10; yu += *p1; shang = yu / b; yu %= b; p1++; } printf ("%llun",yu); } 这是第一次接触大数的问题,C中没有数据类型可以把这么长的数据储存,所以,需要用字符串或者整形数组来分段储存,在其运算过程中,也需要考虑分段计算的问题。
当所有大数考虑到了,那么就需要考虑特殊情况了,比如求余为本身,求商为0,类似的特殊情况。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |