পৃষ্ঠাসমূহ

শুক্রবার, ২৫ ডিসেম্বর, ২০১৫

Jan's LightOJ :: Problem 1006 - Hex-a-bonacci Solution

[sourcecode language="c"]
/*****************************
* *
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
* *
*****************************/


#include <cstdio>
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
long long data[100005];
long long a, b, c, d, e, f;
long long fn( long long n )
{
if( n == 0 ) return a;
else if( n == 1 ) return b;
else if( n == 2 ) return c;
else if( n == 3 ) return d;
else if( n == 4 ) return e;
else if( n == 5 ) return f;
else if(data[n]!=-1) return data[n];
else
{

data[n] = ( fn(n-1) + fn(n-2) + fn(n-3) + fn(n-4) + fn(n-5) + fn(n-6) )%10000007;

return data[n];
}
}
int main()
{
long long n, caseno = 0, cases;
cin>>cases;
while( cases-- )
{
memset(data,-1,sizeof(data));
cin>>a>>b>>c>>d>>e>>f>>n;
cout<<"Case "<<++caseno<<": "<<fn(n)%10000007<<endl;
}

}


[/sourcecode]

বুধবার, ১৬ ডিসেম্বর, ২০১৫

URI Online Judge | 2006 Identifying Tea Solution

[sourcecode language="c"]

/*****************************
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
*****************************/
#include <stdio.h>

int main()
{

int t,count = 0;
int a,b,c,d,e;
scanf("%d",&t);
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(a==t)
count++;
if(b==t)
count++;
if(c==t)
count++;
if(d==t)
count++;

if(e==t)
count++;
printf("%d\n",count);


return 0;
}

[/sourcecode]

মঙ্গলবার, ১৫ ডিসেম্বর, ২০১৫

URI Online Judge | 1235 Inside Out Solution

[sourcecode language="c"]


/*****************************
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
*****************************/

#include <iostream>

using namespace std;

int main()
{


int n;
cin>>n;
cin.ignore();
string line;
while(n-->0)
{
getline(cin,line);

for(int i = (line.length()/2)-1; i>=0; i--)
cout<<line[i];

for(int i = line.length()-1; i>=line.length()/2; i--)
cout<<line[i];
cout<<endl;




}

}

[/sourcecode]

URI Online Judge | 1218 Getline Three - Shoes Solution

[sourcecode language="c"]

/*****************************
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
*****************************/

#include <iostream>
#include <cstdio>
#include <sstream>
using namespace std;

int main()
{


int N,number,mShoes,fShoes,totalShoes,counter = 1,mark = 0;
string line,str;
char ch;

while(scanf("%d",&N)!=EOF)
{
mShoes = 0;
fShoes = 0;
cin.ignore();
getline(cin,line);
stringstream ss(line);

while(ss>>number>>ch)
{
if(number==N)
{
if(ch=='M')
mShoes++;
else if(ch=='F')
fShoes++;
}
}
if(mark!=0)
cout<<endl;
else
mark = 1;
printf("Caso %d:\n",counter);
counter++;
totalShoes = mShoes+fShoes;
printf("Pares Iguais: %d\n",totalShoes);
printf("F: %d\n",fShoes);
printf("M: %d\n",mShoes);


}

}


[/sourcecode]

URI Online Judge | 1217 Getline Two - Fruits Solution

[sourcecode language="c"]
#include <iostream>
#include <string>
#include <sstream>
#include <cstdio>
using namespace std;

int main()
{
int n;
cin>>n;
int day[n],kgCount,kg[n];
double cost, kgSum= 0,moneySum = 0;

string line,str;
for(int i = 0; i<n; i++)
{
kgCount = 0;
cin>>cost;
moneySum+=cost;
cin.ignore();
getline(cin,line);

stringstream ss(line);
while(ss>>str)
{
kgCount++;
kgSum++;

}
kg[i] = kgCount;
cout<<"day "<<i+1<<": "<<kgCount<<" kg"<<endl;

}
printf("%.2lf kg by day\n",kgSum/n);
printf("R$ %.2lf by day\n",moneySum/n);


}

[/sourcecode]

বৃহস্পতিবার, ১৯ নভেম্বর, ২০১৫

সি লাইব্রেরী ফাংশন strlen() এর টিউটোরিয়াল

সি প্রোগ্রামিং ভাষায় strlen() লাইব্রেরি ফাংশন ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করা যায় । strlen() প্যারামিটার হিসেবে একটি সি স্ট্রিং ইনপুট নেয় এবং তার দৈর্ঘ্য রিটার্ন করে । strlen() এর রিটার্ন টাইপ ইন্টিজার এবং এর প্যারামিটারের টাইপ স্ট্রিং ।  যেমন: strlen() এই ফাংশনে যদি "Bangladesh" প্যারামিটার হিসেবে দেয়া হয় তাহলে তা "Bangladesh" স্ট্রিংয়ের দৈর্ঘ্য 10  রিটার্ন করবে ।

এখন প্রশ্ন অাসতে পারে স্ট্রিংয়ের দৈর্ঘ্য বলতে কি বুঝায় ? সি স্ট্রিংয়ের শুরু থেকে স্ট্রিংয়ের শেষে নাল ক্যারেক্টার(‌'\0') পর্যন্ত যতগুলো ক্যারেক্টার অাছে সেই সংখ্যাকে  স্ট্রিংয়ের দৈর্ঘ্য বলা হয় (নাল ক্যারেক্টার (‌'\0')বাদ দিয়ে ) ।

strlen() লাইব্রেরি ফাংশন ব্যবহার করার জন্য string.h লাইব্রেরি ফাংশনটি প্রোগ্রামে যুক্ত করতে হবে । এই জন্য প্রোগ্রামের শুরুতে নিচের লাইনটি লিখতে হবে ।

[sourcecode language="c"]

#include <string.h>

[/sourcecode]

অামরা এখন  নিচে একটি প্রোগ্রামে কিভাবে strlen() ব্যবহার করতে হয় তা দেখব ।

নিচের প্রোগ্রামটিতে একটি string নামের স্ট্রিং ভেরিয়েবল ও স্ট্রিংয়ের দৈর্ঘ্য রাখার জন্য stringLength নামের একটি ইন্টিজার ভেরিয়েবল  তৈরি করা হয়েছে । তারপরে বলা হয়েছে একটি স্ট্রিং ইনপুট দিতে । প্রোগ্রামটিতে "Bangladesh" ইনপুট হিসেবে দেয়া হয়েছে । তারপরে string ভেরিয়েবলটি  strlen() লাইব্রেরি ফাংশনে strlen(string) লিখে প্যারামিটার হিসেবে দেয়া হয় ।  এখন এই ফাংশন string এর দৈর্ঘ্য রিটার্ন করবে । "Bangladesh" স্ট্রিং ইনপুট দেয়ার পরে যখন নিচের  লাইনটি চলবে তখন stringLength ভেরিয়েবলের মান হবে 10 ।

[sourcecode language="c"]

stringLength = strlen(string);

[/sourcecode]

এবং শেষে স্ট্রিংটির দৈর্ঘ্য প্রিন্ট করা হয়েছে।

[sourcecode language="c"]

/*****************************
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
*****************************/

#include <stdio.h>
#include <string.h>// We have to include this for abs() library function

int main()
{

char string[100];
int stringLength;
//Asks for a string input
printf("Enter a string : \n");

scanf("%s",string); //Takes string input

stringLength = strlen(string);//We pass the string to strlen() function
//and store the return value of the function
printf("Length of %s is %d.\n",string,stringLength);
}

[/sourcecode]

[caption id="attachment_96" align="alignnone" width="658"]string স্টিংয়ের দৈর্ঘ্য প্রিন্ট করার প্রোগ্রাম ।[/caption]

শুক্রবার, ১৩ নভেম্বর, ২০১৫

সি লাইব্রেরী ফাংশন abs() এর টিউটোরিয়াল

সি প্রোগ্রামিং ল্যাংগুয়েজে লাইব্রেরী ফাংশন ব্যবহার করে অনেক কাজ খুব সহজে করা যায় । সি প্রোগ্রামিং ল্যাংগুয়েজের স্ট্যান্ডার্ড লাইব্রেরীর ফাংশনগুলো নিয়ে ধারাবাহিকভাবে লেখার চেষ্টা করব । অাজকের বিষয় abs() ফাংশন ।


abs() লাইব্রেরী ফাংশন ব্যবহার করে অামরা ইন্টিজার ডাটা টাইপ  অর্থাৎ পূর্ণসংখ্যার পরমমান বের করতে পারব । abs() লাইব্রেরী ফাংশন একটি ইন্টিজার টাইপের সংখ্যা ইনপুট নিয়ে তার পরমমান রিটার্ন করে । যেমন : অামরা যদি abs() ফাংশনে -3 সংখ্যাটি প্যারামিটার হিসেবে পাস করি  তাহলে তা 3 রিটার্ন করবে ।


abs() লাইব্রেরি ফাংশন ব্যবহার করার জন্য প্রথমে stdlib.h হেডার ফাইলটি প্রোগ্রামে যুক্ত করতে হবে । এই  জন্য #include <stdlib.h> লাইনটি প্রোগ্রামের উপরে লিখতে হবে ।  নিচের প্রোগ্রামটিতে  number ও result নামের দুইটি ইন্টিজার টাইপের  ভেরিয়েবল ডিক্লেয়ার করেছি  । এখন প্রোগ্রাম রান করার পরে একটি সংখ্যা ইনপুট দিতে বলবে । সেই সংখ্যাটি number ভেরিয়েবলে স্টোর করবে । number ভেরিয়েবলটি abs(number) লিখে ফাংশনে প্যারামিটার হিসেবে পাস করা হয়  । ফাংশনটি number এর পরমমান রিটার্ন করবে । তা অামরা result এ স্টোর করবে । শেষে result এর মান প্রিন্ট করবে ।




[sourcecode language="c"]

/*****************************
* Author: Md. Rana Mahmud *
* r4n4m4hmud.wordpress.com *
*****************************/

#include <stdio.h>
#include <stdlib.h>// We have to include this for abs() library function

int main()
{

int number;
int result;
//Asks for a number input
printf("Enter a integer number : \n");
//Takes the intger number input and stores in number variable
scanf("%d",&number);

result = abs(number);//We pass the number variable to abs()
//function and store the return value of the function
printf("Absolute value of %d is %d\n",number,result);
return 0;
}


[/sourcecode]

[caption id="attachment_51" align="aligncenter" width="681"]abs() ফাংশনের প্রোগ্রামটি -9 ইনপুট নিয়ে -9 এর পরমমান 9 প্রিন্ট করছে । abs() ফাংশনের প্রোগ্রামটি -9 ইনপুট নিয়ে -9 এর পরমমান 9 প্রিন্ট করেছে ।[/caption]

উদাহরণ স্বরূপ উপরের প্রোগ্রামটি চালানোর পরে  -9 ইনপুট দেয়া হয় । এই মানটি number ভেরিয়েবলে স্টোর হয় প্রথমে ।  তারপরে  abs() ফাংশনে abs(number) লিখে প্যারামিটার হিসেবে পাস হয় এবং   9 রিটার্ন করে । এই রিটার্ন করা মান তারপরে result ভেরিয়েবলে স্টোর করার পরে result এর মান  প্রিন্ট করে ।

শনিবার, ২৪ অক্টোবর, ২০১৫

সি প্রোগ্রামিং ল্যাংগুয়েজে ইনসার্শন সর্ট অ্যালগরিদমের কোড

[sourcecode language="c"]
//Author: Md. Rana Mahmud
#include <stdio.h>

void insertionSort(int a[],int length)
{
    int key,i,j;


    for(j = 1; j<length; j++)
    {
        key = a[j];
        i = j-1;
        while(i>=0&&a[i]>key)
        {

            a[i+1] = a[i];
            i--;
        }
        a[i+1] = key;

    }

}

int main()
{
    int data[1000],i,num;
    printf("Enter how many numbers are there : \n");
    scanf("%d",&num);
    printf("Enter the numbers: \n");
    for(i = 0; i<num; i++)
        scanf("%d",&data[i]);
    insertionSort(data,num);
    printf("The sorted numbers are : \n");
    for(i = 0; i<num; i++)
        printf("%d ",data[i]);
    printf("\n");
    return 0;

}

[/sourcecode]

রবিবার, ২০ সেপ্টেম্বর, ২০১৫

দুটি সংখ্যার সীমার মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে ?

দুইটি সংখ্যা a , b দেওয়া অাছে । [a,b] সীমার মাঝেকতটি ফিবোনাচ্চি সংখ্যা অাছে অামাদেরকে বের করতে হবে ।  a ও b দেওয়া অাছে । তারা উভয়ই ফিবোনাচ্চি হতেও পারে অাবার নাও হতে পারে । ফিবোনাচ্চি হলে  ফিবোনাচ্চি সংখ্যার একটি সূত্র ব্যবহার করে a ও b কততম ফিবোনাচ্চি সংখ্যা  কততম তা বের করতে পারি ।   a  যদি ফিবোনাচ্চি সংখ্যা না হয় তাহলে a এর পরের ফিবোনাচ্চি সংখ্যাটি কততম এবং b যদি ফিবোনাচ্চি সংখ্যা না হয় b এর অাগের ফিবোনাচ্চি সংখ্যাটি কততম বের করতে পারি । এখন যদি এই দুটি ক্রমের বিয়োগফলই হবে a ও b এর মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে ।

মনে করি F > 1 একটি ফিবোনাচ্চি সংখ্যা । তাহলে F কততম ফিবোনাচ্চি সংখ্যা তা বের করার জন্য নিচের সূত্রটি ব্যবহা করব ।

n(F) = \bigg\lfloor \log_\varphi \left(F\cdot\sqrt{5} + \frac{1}{2}\right) \bigg\rfloor

সূত্রটি যদি F এর মান এক এর চেয়ে বড় হয় তাহলে সঠিক ফলাফল দিবে ।

যেখানে :

\varphi = \frac{1 + \sqrt{5}}{2} \approx 1.61803\,39887\cdots\,

উদাহরণ দিলে অারও পরিষ্কার হবে : 10 ও 100 এর মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে তা বের করতে হবে । তা বের করার জন্য উপরের সূত্র ব্যবহার করে পাই 10(F) = 6 এবং 100(F) = 11 । বিয়োগফল 5 । সুতরাং 10 এবং 100 এর মাঝে 5 টি ফিবোনাচ্চি সংখ্যা অাছে । নিচে ফিবোনাচ্চি সংখ্যার সিরিজেও দেখা যাচ্ছে 10 ও 100 এর মাঝে 5 টি ফিবোনাচ্চি সংখ্যা অাছে ।

1,\;1,\;2,\;3,\;5,\;8,\;13,\;21,\;34,\;55,\;89,\;144,\; \ldots\;

সি প্রোগ্রামিং ভাষায় যদি উপরের হিসেব করার প্রোগ্রাম :

[code language="c"]
#include <stdio.h>
#include <math.h>

int main()
{
double phi = (1+sqrt(5))/2;
int a, b,count = 0,aF,bF;
printf("Enter two numbers: \n");
scanf("%d%d",&a,&b);//Taking input a and b

//logarithm of x base b = log(x)/log(b)

aF = floor(log(a*sqrt(5)+0.5)/log(phi));
bF = floor(log(b*sqrt(5)+0.5)/log(phi));

count = bF - aF;

printf("\nThere are total %d fibonacci numbers.\n",count);


return 0;

}

[/code]

সূত্র ও ছবি : উইকিপিডিয়া ।

মঙ্গলবার, ২৩ জুন, ২০১৫

তৃতীয় ভেরিয়েবল ব্যবহার না করে দুটি ভেরিয়েবলের মান সোয়াপ করা

প্রোগ্রামিং করতে গিয়ে বিভিন্ন সময় অামাদের দুটি ভেরিয়েবলের মান সোয়াপ করতে হয় । দুটি ভেরিয়েবলের মান সোয়াপ করার অর্থ হল প্রথম ভেরিয়েবলের মান দ্বিতীয় ভেরিয়েবলে রাখা এবং দ্বিতীয় ভেরিয়েবলের মান প্রথম ভেরিয়েবলে রাখা । মনে করি   num1 = 80 , num2 = 34  দুইটি ভেরিয়েবল। দুইটি ভেরিয়েবলের মান সোয়াপ করার অর্থ num1 এর মান num2 তে এবং num2 এর মান num1 এ রাখা । অামরা বিভিন্নভাবে দুটি ভেরিয়েবলের মান সোয়াপ করতে পারি ।  অাজ অামরা  কোন ভেরিয়েবলের সাহায্য না নিয়ে কিভাবে দুটি ভেরিয়েবলের মান সোয়াপ করতে পারিন তা দেখব । প্রথমে বিস্তারিত অালোচনা করা হবে এবং তার পাশাপাশি সি প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে দেখানো হবে ।

  1. প্রথম ভেরিয়েবল  ও দ্বিতীয় ভেরিয়েবল যোগ করে যোগফল দ্বিতীয় ভেরিয়েবলে রাখব। যেমন: num2 = num1 + num2 । এখন num2 = num1 + num2 = 80 + 34 = 114 হবে । এই ধাপ শেষে num2 এর মান হয়ে গেল 114 ।
  2. দ্বিতীয় ভেরিয়েবল হতে প্রথম ভেরিয়েবল বিয়েোগ করে বিয়োগফল প্রথম ভেরিয়েবলে রাখব । যেমন : num1 = num2 - num1। এখন num1 = num2 - num1 = 114 - 80 = 34 হবে । এই ধাপ শেষে num1 এর মান হয়ে গেল 34 ।
  3. দ্বিতীয় ভেরিয়েবল হতে প্রথম ভেরিয়েবল বিয়োগ করে বিয়োগফল দ্বিতীয় ভেরিয়েবলে রাখব । যেমন: num2 = num2 - num1 । এখন num2 = num2 - num1 =   114 - 34 = 80 হবে।  এই ধাপ শেষে num2 এর মান হয়ে গেল 80 । 
 অামরা দেখতে পেলাম যে সোয়াপ করার অাগে num1 ও num2 এর মান ছিল 80 ও 34 কিন্তু সোয়াপ করার পরে num1 ও num2 এর মান 34 ও 80 । যে কোন প্রোগ্রামিং ল্যাংগুয়েজে এইভাবে দুইটি ভেরিয়েবলের মান সোয়াপ করা যাবে । অনেক প্রোগ্রামিং ল্যাংগুয়েজে ভেরিয়েবলের মান সোয়াপ করার জন্য ফাংশন থাকে  । অামরা সেদিকে যাব না । নিচে সি প্রোগ্রামিং ল্যাংগুয়েজে দুটি ভেরিয়েবলের মান সোয়াপ করা একটি প্রোগ্রাম দেওয়া হল ।

প্রোগ্রামটির রান করার পরে কনসোলে:
সোয়াপ করার অাগে ও পরে ভেরিয়েবলের মান
 ডাউনলোড