Sunday, July 9, 2017

1214 - Large Division Lightoj problem Solution & Logic

http://www.lightoj.com/volume_showproblem.php?problem=1214

   খুব সহজ একটি , প্রোবলেম .\ কিছুটা https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3001      
  এই প্রোবলেম এর মতো

তোমাকে দুইটা নাম্বার  a&b  দেয়া থাকবে । বলতে হবে ,a সংখ্যাটি ,b  দ্বারা বিভাজ্য কি ণা ??
এখন যেহেতু ,a অনেক বড় সংখ্যা - তাই ,এটা string  আকারে নিতে হবে  | এখানে , মনে রাখবা -a
কিন্তু নেগেটিভ সংখ্যা'ও হতে পারে । তাই , a যদি নেগেটিভ সংখ্যা'ও হয়-তাহলে , string এর লুপ ঘুরানোর সময় - string এর প্রথম s[0] ignore করে , s[1] থেকে আমাদের লুপ ঘুরিয়ে কাজ করতে হবে ।
কোড এর ভেতরে , আমরা - j দিয়ে এই কাজ করেছি । আর বেশী ব্যাখ্যা দিবো না ,কারণ । যে প্রক্রিয়াতে ,
কাজ করেছি সেটা নিয়ে এর আগে , এখানে http://nayeemmollickjoy.blogspot.com/2017/07/11879-multiple-of-17-uva-solution-logic.html

আলোচনা করেছি , কিভাবে ? বড় সংখ্যা, কোনো ছোট সংখ্যা দিয়ে বিভাজ্য কি না ? সেটা কিভাবে , চেক করতে হয় ,চাইলে দেখে নিতে পারো ।

এবারে কোড দেখে নাও , রিফ্রেশ হও

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>

//Nayeem Mollick Joy ,Applied Physics And Electronic Engineering,University Of Rajshahi.

using namespace std;

int main()

{
    int T,rem;
    cin>>T;
    string s;
    long long int b,n,k,j;
    for(int i=1;i<=T;i++)

    {
        cin>>s>>b;

        int l=s.size();

        if(s[0]=='-')
        {
            j=1;
        }

        else
        {
            j=0;
        }
        if(b<0)
        {
            b=b*(-1);
        }
         n=0;
         int count=0;
         for(k=j;k<l;k++)
         {
             n=(s[k]-'0')+n*10;
             n=n%b;
         }
         if(n)
         {
             printf("Case %d: not divisible\n",i);
         }
          else
             printf("Case %d: divisible\n",i);
         }

         return 0;
    }


1 comment: