Advertisement
wojiaocbj

Untitled

Mar 5th, 2023
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6. #define MAX(a,b) (((a)>(b))?(a):(b))
  7. #define MIN(a,b) (((a)<(b))?(a):(b))
  8. int numlen(long long k){
  9.     if(k == 0){
  10.         return 1;
  11.     }
  12.     int ans = 0;
  13.     while(k > 0){
  14.         k /= 10;
  15.         ans += 1;
  16.     }
  17.     return ans;
  18. }
  19. int main(){
  20.     long long a, b, ans, b2;
  21.     scanf("%lld%lld", &a, &b);
  22.     ans = a * b;
  23.     b2 = b;
  24.     char fmt[16] = { 0 };
  25.     int i;
  26.     int alen = numlen(a), blen = numlen(b), anslen = numlen(ans);
  27.     int linelen = MAX(anslen, MAX(alen, blen + 1));
  28.     sprintf(fmt, "%%%dlld\n", linelen);
  29.     printf(fmt, a);
  30.     putchar('*');
  31.     sprintf(fmt, "%%%dlld\n", linelen - 1);
  32.     printf(fmt, b);
  33.     for(i = 0;i < linelen;i++){
  34.         putchar('-');
  35.     }
  36.     putchar('\n');
  37.     if(a < 10 || b < 10){
  38.         sprintf(fmt, "%%%dlld\n", linelen);
  39.         printf(fmt, ans);
  40.     }
  41.     else{
  42.         int curlen = linelen;
  43.         while(b2 > 0){
  44.             sprintf(fmt, "%%%dlld\n", curlen);
  45.             printf(fmt, a * (b2 % 10));
  46.             b2 /= 10;
  47.             curlen -= 1;
  48.         }
  49.         for(i = 0;i < linelen;i++){
  50.             putchar('-');
  51.         }
  52.         putchar('\n');
  53.         sprintf(fmt, "%%%dlld\n", linelen);
  54.         printf(fmt, ans);
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement