Wednesday, July 12, 2017

11332 - Summing Digits Uva Solution & Logic

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2307

খুবই সহজ একটা প্রোবলেম , একটি সংখ্যা দেয়া থাকবে , যতক্ষন না -  সংখ্যাটি ১০ এর ছোট না হয় , ততক্ষন তার ডিজিটগুলোর যোগফল বের করতে হবে । যেমন , ধরো  দেয়া আছে সংখ্যাটি ১২৩৪৯

তাহলে , f(12349) = 1+2+3+4+ 9 = 19

              f(19) = 1+9 =10

              f(10) = 1+0 = 1

          যখন , এভাবে ভাংতে ভাংতে  ১০ এর ছোট হয়ে যায় , ঠিক তখনই সেটাই হবে উত্তর ।
চলো কোড দেখি ,

#include<bits/stdc++.h>


using namespace std;

int main()
{
    int t;
    long long int n;

  while(scanf("%lld",&n)==1){
       
      if(n==0)
      break;

        t=0;
        while(true){

                while(n!=0){
                        t=t+(n%10);
                        n=n/10;
                }
               
                if(t/10==0){
                  break;
                        }
               
                else{
                    n=t;
                    t=0;
                    }
                   
                   }

        printf("%d\n",t);
  }

    return 0;
}

No comments:

Post a Comment