Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <ctype.h>
- #include <string.h>
- #define MAX(a,b) (((a)>(b))?(a):(b))
- #define MIN(a,b) (((a)<(b))?(a):(b))
- int numlen(long long k){
- if(k == 0){
- return 1;
- }
- int ans = 0;
- while(k > 0){
- k /= 10;
- ans += 1;
- }
- return ans;
- }
- int main(){
- long long a, b, ans, b2;
- scanf("%lld%lld", &a, &b);
- ans = a * b;
- b2 = b;
- char fmt[16] = { 0 };
- int i;
- int alen = numlen(a), blen = numlen(b), anslen = numlen(ans);
- int linelen = MAX(anslen, MAX(alen, blen + 1));
- sprintf(fmt, "%%%dlld\n", linelen);
- printf(fmt, a);
- putchar('*');
- sprintf(fmt, "%%%dlld\n", linelen - 1);
- printf(fmt, b);
- for(i = 0;i < linelen;i++){
- putchar('-');
- }
- putchar('\n');
- if(a < 10 || b < 10){
- sprintf(fmt, "%%%dlld\n", linelen);
- printf(fmt, ans);
- }
- else{
- int curlen = linelen;
- while(b2 > 0){
- sprintf(fmt, "%%%dlld\n", curlen);
- printf(fmt, a * (b2 % 10));
- b2 /= 10;
- curlen -= 1;
- }
- for(i = 0;i < linelen;i++){
- putchar('-');
- }
- putchar('\n');
- sprintf(fmt, "%%%dlld\n", linelen);
- printf(fmt, ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement