From d31fe4ec44510d67dc4ca7d0bcab8c4abbae64f0 Mon Sep 17 00:00:00 2001 From: smallkun Date: Wed, 2 Apr 2025 19:34:45 +0800 Subject: [PATCH] Auto commit --- 高精度.md | 52 +++++++++++++++++++--------------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/高精度.md b/高精度.md index 630ecef..8b80704 100644 --- a/高精度.md +++ b/高精度.md @@ -37,35 +37,35 @@ int main(){ ```c #include -#include int main(){ - char str1[200], str2[200], temp[200],result[1000] = {0}; - int i, j, k, t; - scanf("%s%s", str1, str2); + char str1[200], str2[200], result[400]={0}; + int i, j, k, t = 0; - j=strlen(str2)-1; + scanf("%s %s", str1, str2); + j=strlen(str2)-1;//下面的数的从个位开始的每一位的下标 while(j>=0){ - k=0; - for(i=strlen(str1)-1;i>=0;i--){ - t = k + strlen(str2)-1-j; - result[t+1] += (result[t] + (str1[i]-48)*(str2[j]-48))/10; - result[t] = (result[t] + (str1[i]-48)*(str2[j]-48))%10; + i=strlen(str1)-1;//上面的数的每一位的下标 + k=0;//上面数字的 0:个位 1:十位 + t=strlen(str2)-j-1;//下面数字乘法的偏移量 + while(i>=0){ + result[k+t] += (str1[i]-48)*(str2[j]-48); + result[k+t+1] += result[k+t]/10; + result[k+t] %=10; k++; + i--; } j--; - } - k+=strlen(str2)-1; - while(result[k]==0) k--; + } + k+=strlen(str2); + while(result[k] == 0) k--; while(k>=0){ - putchar(result[k] + 48); - k--; - } - puts(""); - - + putchar(result[k--]+48); + } + printf("\n"); + return 0; } @@ -73,19 +73,5 @@ int main(){ -### 高精度减法 - -```c -``` - - - - - -### 高精度乘法 - -```c -``` -