Timus 1086. Cryptography Solution

1086. Cryptography Solution

The main problem is...

Input

First line contains a positive integer k. Then k positive integers follow (one in each line). The numbers don't exceed 15000.

Output

For each number n you should output the n-th by order prime number. Each number should be in its line.

Sample

inputoutput
4
3
2
5
7
5
3
11
17

Notes

The prime number is a positive integer that has exactly two different positive divisors, i.e. 1 is not a prime number.

Time limit: 2.0 second
Memory limit: 64 MB

Solution: 
Solution of the problem in C++ language 

#include< bits/stdc++.h >
using namespace std;
int dp[15000];
int c=0, num=3;
int prime(int n){
    dp[0]=2;
    if(dp[n]!=-1) return dp[n];
    for(num; c<=n; num+=2){
        for(int i=0; i<=c; i++){
            if(num%dp[i]==0) break;
            if(i==c) {dp[++c]=num; break;}
        }
    }

     return dp[n];

}
int main(){
    memset(dp, -1, sizeof(dp));
    int k, n;
    scanf("%d", &k);
    for(int i=0; i<k; i++)
    {
        scanf("%d", &n);
        printf("%d\n", prime(n-1));
    }
}

Java Stdin and Stdout I (Hackerrank) Solution: (জাভা স্ট্যান্ডার্ড ইনপুট আউটপুট)

Problem 1:

Most HackerRank challenges require you to read input from stdin (standard input) and write output to stdout (standard output).
One popular way to read input from stdin is by using the Scanner class and specifying the Input Stream as System.in.
Alternatively, you can use the BufferedReader class.

Task
In this challenge, you must read integers from stdin and then print them to stdout. Each integer must be printed on a new line. To make the problem a little easier, a portion of the code is provided for you in the editor below.

Input Format
There are lines of input, and each line contains a single integer.

Sample Input

42 100 125 


Sample Output


42 100 125


Solution:

import java.util.*;

public class Solution {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
scan.close();
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

সি প্রোগ্রামিং প্যাটার্ন ( Pattern with c 1 232 34543)

Pattern(1 232 34543 )
Pattern (1 232 34543.......)
উপরের চিত্রের প্যাটার্ন তৈরি করার জন্য সি ভাষায় লিখিত প্রোগ্রাম।


#include<stdio.h>
int main()
{
    int row,i,n;
    printf("Enter the row numbers:");
    scanf("%d",&n);
    for(row=1; row<=n; row++)
    {
          for(i=1; i<=n-row; i++)
            printf(" ");

          for(i=row; i<=2*row-1; i++)
        printf("%d",i%10);

          for(i=2*row-2; i>=row; i--)    
              printf("%d",i%10);

          printf("\n");
      }
return 0 }



By: JUWEL RANA 

ক্রমিক জোড় ও বেজোড় স্বাভাবিক সংখ্যার যোগফল নির্ণয়।

হাতিয়াপাড়া:
পূর্বে আমরা ক্রমিক স্বাভাবিক সংখ্যার যোগফল নির্ণয় করে ছিলাম। (দেখতে এখানে ক্লিক করুন হাতিয়াপাড়া)।
এবার আমরা ক্রমিক স্বাভাবিক জোড় সংখ্যার যোগফল নির্ণয় করব।
ক্রমিক স্বাভাবিক সংখ্যা নির্ণয়ের সূত্র ছিল এরকম:
(n1+n2)(n2-n1)/2
আমরা এবারও এই সূত্রটিকে কাজে লাগাবো।
প্রথমে পূর্বে দেওয়া উদাহরণটি দেখে নিই তারপর তা বিশ্লেষণ করি।
১। ৮৬ থেকে ১৮৬ পর্যন্ত সবগুলো জোড় সংখ্যার যোগফল কত? সংখ্যাগুলো লিখলে এরূপ হবে,
৮৬+৮৮+৯০+৯২+৯৪+৯৬+৯৮+১০০+.................+১৮০+১৮২+১৮৪+১৮৬
যেহেতু সংখ্যাগুলো জোড় তাই তাদের মধ্যে সাধারণ (Common) সংখ্যা হচ্ছে ২। সুতরাং আমরা লিখতে পারি,
 ২(৪৩+৪৪+৪৫+৪৬+৪৭+৪৮+৪৯+৫০+.........+৯০+৯১+৯২+৯৩)
এখন তো আমরা স্বাভাবিক সংখ্যার যোগফল নির্ণয়ের সূত্র ব্যবহার করতে পারি।
এখানে প্রথম সংখ্যা ৪৩ এবং শেষ সংখ্যা ৯৩।
 সুতরাং যোগফল = ২{(৪৩+৯৩)(৯৩-৪৩)}/২=(৪৩+৯৩)(৯৩-৪৩)
=১৩৬*৫০
=৬৮০০


  
২। ১ থেকে ১০০ পর্যন্ত সবগুলো জোড় সংখ্যার সমষ্টি কত?
সমাধান:
১ম সংখ্যা ২ (১ জোড় নয়)
শেষ সংখ্যা ১০০
যোগফল= {(২+১০০)*৫০}/২=(১০২*৫০)/২ =৫১০০/২ =২৫৫০
এখানে সূত্রটি হল:
{(প্রথম সংখ্যা+ শেষ সংখ্যা) * পদ সংখ্যা}/২
যা সকল(জোড়, বেজোড়, স্বাভাবিক) ক্রমিক সংখ্যার ক্ষেত্রে প্রযোজ্য।

১ থেকে ১০০ পর্যন্ত সবগুলো বেজোড় সংখ্যার যোগফল কত?
সমাধান:
৫০=২৫০০ 
প্রথম n সংখ্যক বেজোড় সংখ্যার সমষ্টি n
এখানে ১ থেকে ১০০ পর্যন্ত বেজোড় সংখ্যা ৫০ টি। সুতরাং প্রথম ৫০ টি বেজোড় সংখ্যার সমষ্টি=৫০=২৫০০

ক্রমিক স্বাভাবিক সংখ্যার যোগফল নির্ণয়।

হাতিয়াপাড়া:
n1 থেকে n2 পর্যন্ত ক্রমিক স্বাভাবিক সংখ্যার যোগফল কত?
বিভিন্ন ধরনের চাকরির পরীক্ষায় অষ্টম শ্রেণির এই অঙ্কগুলো প্রায়শই আসে।

যেমন:
১।  ১ থেকে ১০০ পর্যন্ত সবগুলো স্বাভাবিক সংখ্যার যোগফল কত?
২।  ৩৫ থেকে ৭০ পর্যন্ত সবগুলো স্বাভাবিক সংখ্যার যোগফল কত?

চাকরির পড়াশুনার ক্ষেত্রে এই গণিতের  এই অঙ্কগুলো খুবই ‍গুরুত্বপূর্ণ।
ক্রমিক স্বাভাবিক সংখ্যার ক্ষেত্রে যোগফল (আসলে এগুলো একেকটি ধারা) নির্ণয়ের সূত্র হল:


(১ম সংখ্যা + শেষ সংখ্যা)⨯পদ সংখ্যা
সূত্রটিকে এভাবে লেখা যায়:
         (n₁ + n)(n₁ − n₂ + 1)

                 2
যেখানে ধারাটির ১ম ও শেষ সংখ্যা যথাক্রমে n ও n এবং পদসংখ্যা 
(n₁ − n₂ + 1) হল পদ সংখ্যা।


তাহলে আমরা ১ম সমস্যাটি সমাধান করি:
১: প্রথম সংখ্যা ১
২: শেষ সংখ্যা ১০০
৩: পদ সংখ্যা (১০০-১+১)=১০০
৪: সুতরাং ১ থেকে ১০০ পর্যন্ত স্বাভাবিক সংখ্যাগুলোর যোগফল
=(১+১০০)⨯১০০/২
=(১০১)⨯৫০
=৫০৫০ ক্যালকুলেটর ছাড়াই কী ভাবে গুণ করবে?>>>(হাতিয়াপাড়া)

২য় সমস্যাটিও একই রকম:
১: প্রথম সংখ্যা ৩৫
২: শেষ সংখ্যা ৭০
৩: পদ সংখ্যা =৭০-৩৫+১=৩৬
৪: সুতরাং ৩৫ থেকে ৭০ পর্যন্ত স্বাভাবিক সংখ্যাগুলোর যোগফল
=(৩৫+৭০)⨯৩৬/২
=১০৫⨯১৮
=১৮৯০

৮৬ থেকে ১৮৬ পর্যন্ত সবগুলো স্বাভাবিক জোড় সংখ্যার যোগফল কত?
সমাধান: 
(৪৩+৯৩)(৯৩-৪৩)  [কীভাবে? বিস্তারিত দেখুন>>>হাতিয়াপাড়া]
=১৩৬*৫০
=৬৮০০   

সি ভাষার ক্যারাক্টার সেট, আইডেন্টিফায়ার এবং কি ওয়ার্ড

সি ভাষায় A থেকে Z পর্যন্ত ছোট হাতের ও বড় হাতের এবং 0 থেকে 9 পর্যন্ত সংখ্যা ব্যবহার করা যায়। এছাড়াও বিভিন্ন কনস্ট্যান্ট(constant), ভ্যারিয়েবল (variable), অপারেটর (operator), রাশি (expression) ইত্যাদি ক্ষেত্রে কিছু বিশেষ বর্ণ (special character) ব্যবহৃত হয়। এগুলো নিম্নরূপ:
+    -      *     /    =       %      >     <:    ;     (    )     {       }       [    ]     _ 
     
#    &     !     ?     ^      "       '     -     |     .        ,      (blank space)  


সি ভাষায় নির্দিষ্ট কিছু ওয়ার্ড রয়েছে যার সি ভাষায় যার নির্দিষ্ট অর্থ আছে (predefined meaning) যাদের কিওয়ার্ড (Keywords) বলে। কিওয়ার্ডগুলো (keywords) তার নিজস্ব কাজ ছাড়া অন্য কাজ (যেমন: চলক হিসেবে) ব্যবহার করা যাবে না। এই কি ওয়ার্ডগুলো ছোট হাতের লিখতে হয়।
কিওয়ার্ডগুলো নিম্নরূপ:
auto   break  case  char   const   continue   default   do   double   else   enum 
extern   float   for   goto   if   int   long   register   return   short   signed
sizeof   static   struct   switch   typedef   union   unsigned   void  volatile while


এছাড়াও কিছু কিছু সি কম্পাইলারে নিচের সি কিওয়ার্ডগুলোও (C keywords) থাকে:
ada   asm   entry   far   fortran   huge   near   pascal

পাছে লোকে কিছু বলে

কামিনী রায় এর একটি কবিতা:
করিতে পারি না কাজ, 
সদা ভয়, সদা লাজ
সংশয়ে সংকল্প সদা টলে, 
পাছে লোকে কিছু বলে।

আড়ালে আড়ালে থাকি,
নীরবে আপনা ঢাকি,
 সম্মুখে চরণ নাহি চলে,
 পাছে লোকে কিছু বলে।

হৃদয়ে বুদবুদ মতো, 
উঠে শুভ্র চিন্তা কত, 
মিশে যায় হৃদয়ের তলে 
পাছে লোকে কিছু বলে।


কাদেঁ প্রাণ যবে, আঁখি
সযতনে শুষ্ক রাখি
নিরমল নয়নের জলে 
পাছে লোকে কিছু বলে।

 একটি স্নেহের কথা 
প্রশমিতে পারে ব্যথা
চলে যাই উপেক্ষার ছলে 
পাছে লোকে কিছু বলে।

মহৎ উদ্দেশ্যে যবে 
এক সাথে মিলে সবে
পারি না মিলিতে সেই দলে
পাছে লোকে কিছু বলে।

বিধাতা দিছেন প্রাণ
থাকি সদা ম্রিয়মাণ
শক্তি মরে ভীতি কবলে
পাছে লোকে কিছু বলে।

ম্যাজিক বর্গ / যাদুর বর্গ (Magic Square)

ম্যাজিক বর্গ


কোনো বর্গক্ষেত্রকে দৈর্ঘ  ও প্রস্থ বরাবর n সংখ্যক ভাগে ভাগ করে n × n সংখ্যক ছোট ছোট বর্গক্ষেত্রে পরিণত করে প্রত্যেকটি বর্গে ক্রমিক সংখ্যা (সাধারণত ১ থেকে n²) দ্বারা এমন ভাবে পূরণ করা হয় যেন প্রতিটি সারি, কলাম ও কর্ণ  বরাবর যোগফল সমান হয় তাহলে  এটি একটি n ক্রমের ম্যাজিক বর্গ।

তিন ক্রমের ম্যাজিক বর্গ:
যদি কোনো বর্গ ক্ষেত্রকে দৈর্ঘ ও প্রস্থ বরাবর ৩ ভাগে ভাগ করা হয় তাহলে ৯ টি ছোট ছোট বর্গ তৈরি হয়।  এ বর্গক্ষেত্রগুলো যদি ১ থেকে ৯ পর্যন্ত সংখ্যা দ্বারা এমন  ভাবে পূরণ করা হয় যেন প্রতিটি সারি, কলাম ও কর্ণ  বরাবর সংখ্যাগুলোর যোগফল  সমান হয়। তাহলে এটিকে তিন ক্রমের ম্যাজিক বর্গ
 বলে (Magic square of Order 3)। 

যেমন : 
তিন ক্রমের ম্যাজিক সংখ্যা (Magic square of order 3)


চার ক্রমের ম্যাজিক বর্গের ক্ষেত্রে ১৬ টি ক্ষুদ্র ক্ষুদ্র বর্গক্ষেত্র থাকে। এ ক্ষেত্রে ১ থেকে ১৬ পর্যন্ত সংখ্যা ব্যবহার করা হয়।
যেমন:

চার ক্রমের ম্যাজিক বর্গ (Magic square of order 4)


কিন্তু প্রশ্ন হল আমরা কীভাবে জানবো একটি সারি বা কলাম বা কর্ণ বরাবর যোগফল কত হবে?
আর সংখ্যাগুলো সাজানোর কোনো নিয়ম আছে কি?
হ্যাঁ ম্যাজিক বর্গ একটি প্যাটার্ন অনুসরণ করে। 
আমরা যদি তিন ও চার ক্রমের ম্যাজিক বর্গগুলো ভালভাবে লক্ষ্য করি তাহলে দেখতে পাই যে, তিন ক্রমের ম্যাজিক বর্গের প্রতিটি সারি, কলাম ও কর্ণের যোগফল ১৫ ও চার ক্রমের ম্যাজিক বর্গের প্রতিটি সারি, কলাম ও কর্ণের যোগফল ৩৪। 
অর্থাৎ তিন ক্রমের ম্যাজিক বর্গের ম্যাজিক সংখ্য ১৫ এবং চার ক্রমের ম্যাজিক সংখ্যা ৩৪।
পাঁচ ক্রমের ম্যাজিক বর্গের ম্যাজিক সংখ্যা ৬৫।
৩, ৪, ৫ ক্রমের জন্য ম্যাজিক সংখ্যা হল ১৫, ৩৪, ৬৫ এদের মধ্যে পাটার্ন হল:
ম্যাজিক সংখ্যা নির্ণয়ের সূত্র (Formula for magic number)
যা ম্যাজিক সংখ্যা নির্ণয়ের সূত্র। 
ম্যাজিক সংখ্যা মানেই কোনো ম্যাজিক বর্গের যে কোনো একটি কর্ণ
 অথবা যে কোনো একটি সারি অথবা যে কোনো একটি কলাম বরাবর যোগফল।
দেখি সূত্রটি কার্যকর কি না?
 তিন ক্রমের জন্য ম্যাজিক সংখ্য হবে:
৩(৩ ৩ +১)/২
= ৩ (৯ +১)/২
= ৩ ১০/২
=১৫
তাহলে ৭ ক্রমের ম্যাজিক সংখ্যা কত হবে আমরা নির্ণয় করে দেখি:
  ৭(৭²+১)/২
= ৭(৪৯+১)/২
= (৭ X ৫০)/২
= ১৭৫
এই ভাবে আমরা অনেক বড় বড় ম্যাজিক বর্গের ম্যাজিক সংখ্যা নির্ণয় করতে পারি।
আবার বেজোড় সংখ্যক (৩, ৫, ৭,...) ম্যাজিক বর্গের ক্ষেত্রে মধ্যের সংখ্যাটি সব সময় নির্দিষ্ট থাকে। যেমন তিন ক্রমের জন্য ৫। মাঝখানের সংখ্যা নির্ণয় করার জন্য অন্য একটি সূত্র আছে। আর তা হল:
বেজোড় সংখ্যক ম্যাজিক বর্গের মাঝখানের সংখ্যা নির্ণয়ের সূত্র
(জোড় সংখ্যার ক্ষেত্রে এই সূত্র প্রযোজ্য নয়। কেননা জোড় সংখ্যার ক্ষেত্রে দুই কর্ণের  মাঝে কোনো সাধারণ (common) সংখ্যা থাকে না।)
তাহলে তিন ক্রমের ম্যাজিক বর্গের মাঝখানের বর্গে বসবে (৩ ৩ + ১)২=৫।
পাঁচ ক্রমের ম্যাজিক বর্গের মাঝখানের বসবে (৫ ৫ + ১) = ১৩।

বেজোড় ক্রমের ম্যাজিক বর্গ সমাধানের কৌশল:

বেজোড় ক্রমের ম্যাজিক বর্গ  (যেমন: ৩, ৫, ৭, ৯, .........) নির্ণয়ের ক্ষেত্রে: 
১।  প্রথমে মাঝখানের কলামের সবার উপরের ঘরে ছোট সংখ্যাটি (সাধারণত ১) বসাতে হবে।
২। এরপর কোনাকুনি ভাবে উপরের ঘরে তার পরের সংখ্যাটি অর্থাৎ ২ বসবে।
৩। যদি উপরের ঘর না থাকে তাহলে সোজাসুজি সবার নিচের ঘরে বসাতে হবে।(নিচের ভিডিও তে ২ এর অবস্থান)
৪। যদি কোনাকুনি ভাবে ঘর ফাঁকা না থাকে তাহলে কোনাকুনি ভাবে না গিয়ে ঠিক নিচের ঘরে বসবে। (ভিডিও তে ৪ এর অবস্থান)
৫। যদি কোনাকুনিভাবে ঘর না থাকে এবং নিচেও ঘর না  থাকে তবে বাম দিকের একই সারি বরাবর সর্ববামে যাবে।(নিচের ভিডিও তে ৩ এর অবস্থান)
৬। যদি কোনাকুনি, পাশাপাশি, ঘর না থাকে তবে সেক্ষেত্রে ঠিক নিচের ঘরে যাবে।(নিচের ভিডিও তে ৭ এর অবস্থান)













জোড় ক্রমের (৪ ক্রমের) ম্যাজিক বর্গ নির্ণয়:

চার ক্রমের ম্যাজিক বর্গ নির্ণয়ের জন্য:
১।  প্রথমে ১ থেকে ১৬ পর্যন্ত সংখ্যাগুলি দ্বারা পর্যায় ক্রমের ঘরগুলো পূরণ করতে হবে। (সারি বরাবর নিচের চিত্রের মতো)

২। এরপর কর্ণ বরাবর চারটি কর্ণের সংখ্যাগুলো স্থান বিনিময় করতে হবে।


৩। এরপর মাঝের কলাম ‍দুটির উপরের ও নিচের সারির সংখ্যাগুলো পাশাপাশি কলামের সাথে বিনিময় করি। এসময় খেয়াল রাখতে হবে সারি ও কলাম বরাবর যোগফল ঠিক থাকে। সারি ও কলাম ও কর্ণ বরাবর যোগফল কত হবে তা আগেই বলা হয়েছে (সূত্র দেখুন)।
৪। তাহলেই হয়ে গেল চার ক্রমের ম্যাজিক বর্গ।


Click to Play Slide (Magic square of order 4)

















ম্যাজিক বর্গ সম্পর্কিত সমস্যা সমাধান:

আশা

সিকান্‌দার আবু জাফর এর একটি কবিতা: আশা


আমি সেই জগতে হারিয়ে যেতে চাই, 
যেথায় গভীর-নিশুত রাতে 
জীর্ণ বেড়ার ঘরে 
নির্ভাবনায় মানুষেরা ঘুমিয়ে থাকে ভাই।।
যেথায় লোকে সোনা-রূপায় 
পাহাড় জমায় না,
বিত্ত-সুখের দুর্ভাবনায় 
আয়ু কমায় না; 
যেথায় লোকে তুচ্ছ নিয়ে 
 তুষ্ট থাকে ভাই।।
সারা দিনের পরিশ্রমেও 
পায়না যারা খুঁজে 
একটি দিনের আহার্য-সঞ্চয়, 
তবু যাদের মনের কোণে
 নেই দুরাশা গ্লানি,
 নেই দীনতা, নেই কোনো সংশয়। 
যেথায় মানুষ মানুষেরে
    বাসতে পারে ভালো
 প্রতিবেশীর আঁধার ঘরে 
 জ্বালতে পারে আলো,
 সেই জগতের কান্না-হাসির 
অন্তরালে ভাই
আমি হারিয়ে যেতে চাই।।

অ্যারের সাহায্যে ছোট হাতের বর্ণকে (small letter) বড় হাতের বর্ণে (capital letter) রূপান্তর।

/* ছোট হাতের বর্ণকে বড় হাতের বর্ণে রূপান্তর করার প্রোগ্রাম */




C programming Array- small to CAPITAL


#include <stdio.h>
#include <ctype.h>
#define LENGTH 5
int main()
{
     /* অ্যারে ডিক্লারেশন */
     char word[LENGTH];
     int i;
     /* অ্যারেতে উপাত্ত ইনপুট */
     for (i=0; i<LENGTH; ++i)
     word[i]=getchar();
   /* বড় হাতের বর্ণে (capital letter) রূপান্তর*/
     for(i=0; i<LENGTH; ++i)
    putchar(toupper(word[i]));
}

জীবনটা আসলে কী?


ক্ষুদ্র এই জীবনের অনেকগুলি বছর দেখতে দেখতে কেটে গেল। তার মধ্যে কিছু বছর গেছে যখন আমি জীবনের কিছুই বুঝতাম না। এখনও যে বুঝি তাও না। তবে চেষ্টা করছি।  আবার ভাবি কেন জীবনকে বুঝার চেষ্টা করছি? উত্তর কখনও থাকে কখনও থাকেনা।


জীবনে চলার নানা পথ, নানা মত সত্যিই আমাকে বিস্মিত করে ফেলে। চলার পথটি কখনও বন্ধুর কখনও মসৃণ। যখন মসৃণ পথ পাড়ি দিই তখন মনে হয় পৃথিবীতে না আসলে বোধহয় জীবটা উপভোগ্য হত না।
আবার যখন বন্ধুর পথ পাড়ি দিই তখন মনে হয় পৃথিবীতে আসা যেন ব্যর্থতা। 
জীবন টা আসলে কী?