Friday, July 21, 2017

1048. Superlong Sums Timus Problem Solution & Logic

http://acm.timus.ru/problem.aspx?space=1&num=1048

এটা খুবই সোজা একটি প্রোবলেম , তোমায় ২ টা বিশাল বড় সংখ্যা যোগ করতে হবে , তোমায় সংখ্যা দুটি'র ডিজিট আলাদা করে দেয়া থাকবে । যেমন ,
                                                       0 4
                                                       4 6
                                                       6 5
                                                       7 1
    
 তাহলে , তোমায় - তোমায় বুঝতে হবে  4651+0467=?  তাহলে , এখানে আমরা  একটা  Array আগেই Declare করে নিবো - ও ইনপুট নেবার সময়ই ডিজিট গুলো যোগ করে Array তে ধুকিয়ে নিবো । তাহলে
যদি , Array টি'র নাম a হয় - তাহলে , কি হবে ? চলো দেখি ----------
                                                               a[0]=4    ;
                                                               a[1]=10  ;
                                                               a[2]=11  ;
                                                               a[3]=8    ;
এখন আরো কিছু , কারুকাজ তো বাকিই থেকে গেলো - যে ঘর গুলোতে যেমন ,  a[1]=10  ,  a[2]=11 তে এক এর অধিক ডিজিট আছে , কিন্তু - যোগ করার সময় তো - আমরা , ডান এর ডিজিট'টা লিখি ও বাম পাশের ডিজিট তো হাতে রেখে দেই , যেটা পরেরটার সাথে যোগ করি , তাই না ?? তাহলে এই কাজ'টি করবার জন্য আরো একটি লুপ চালিয়ে একদম শেষ থেকে দেখবো , a এর কোন ঘরে দুইটা ডিজিট আছে - সেখানে ডান পাশের ডিজিট'টা রেখে , বাম পাশের'টা  পরেরটার সাথে যোগ দিবো । তো চলো , কোড'টা দেখে ফেলি - আর হ্যা , একটা বিষয় মাথায় রাখা প্রয়োজন ,যে - scanf & printf  সাধারনত cin&cout  এর চেয়েও , দ্রুত কাজ করে ,তাই আমরা এটাই ব্যবহার করবো - অন্যথায়  TLE খাবার সম্ভাবনা আছে ।



                                 
#include <stdio.h>

char a[1000000];

int N,x,y;

int main(){
    scanf("%d",&N);

    for(int i = 0; i<N;++i){
        scanf("%d %d",&x,&y);
        a[i] = x+y;
    }

    for(int i=N-1;i>0;--i){
        a[i-1] += a[i]/10;
        a[i] %= 10;
    }

    for (int i = 0 ; i<N ; ++i)
    {
        printf("%d",a[i]);
    }

    return 0;
}
                         

 

No comments:

Post a Comment