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;
}
এটা খুবই সোজা একটি প্রোবলেম , তোমায় ২ টা বিশাল বড় সংখ্যা যোগ করতে হবে , তোমায় সংখ্যা দুটি'র ডিজিট আলাদা করে দেয়া থাকবে । যেমন ,
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