Sezar şifrəsi

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon GE Healthcare Grofers UHG Optum
Kriptoqrafiya SimBaxılıb 236

təsvir

Sezar Şifrəsi texnikası, şifrələmənin ən erkən metodlarından biridir. Burada, verilmiş mətndəki hər hərf üçün əlifbanın altındakı bir neçə sabit mövqedə bir məktubla əvəz olunur. N = 1 olarsa A-nı B ilə əvəzləyin, B C olar və s.

Yəni S (x) = (x + n) mod26.

Burada a = 0, b = 1, ……. z = 25.

Giriş Formatı

A olan ilk sətir sim "S".

Hər bir simvolun keçid sayını əks etdirən n tam ədədi olan ikinci sətir.

Çıxış formatı

Sonuncu "t" simli olan ilk və yalnız bir sətir. Burada t [i] = (s [i] + n) / 26.

Məhdudiyyətlər

  • 1 <= | s | <= 10 ^ 6
  • s [i] kiçik İngilis əlifbası olmalıdır

misal

middleoutz
2
okffngqwvb

Explanation: Verilən “middleoutz” sətrində hər bir simvol 2-yə fırlandıqdan sonra simvolun dəyəri olur:

m -> o
i -> k
d -> f
d -> f
l -> n
e -> g
0 -> q
u -> w
t -> v
z -> b

Beləliklə, son ipimiz “okffngqwvb” dir.

Sezar Şifrəsi üçün alqoritm

Burada kiçik hərflərdən ibarət bir sətir Mətn, 0 - 25 arasındakı bir tam isə Shift olur. Simli şifrələmək üçün simvoldakı əlifbaları k rəqəmi ilə döndərməliyik. K 26-nın çoxluğudursa, simvoldakı əlifbaları k ilə döndürməyin simli üzərində heç bir təsiri yoxdur. K ilə fırlanma k + 26 ilə dönmə ilə eynidir. Beləliklə, k modulunu 26 ilə götürərək, simlin əlifbalarını döndərməyimiz lazım olan sayı əldə edirik.

1. Giriş sətrini keçin.

2. Hər bir xarakter üçün qaydalara uyğun olaraq çevirmək üçün hər dəfə bir simvol götürün.

3. Son simli qaytarın.

Həyata keçirilməsi

Sezar Şifrəsi üçün C ++ Proqramı

#include <bits/stdc++.h>
using namespace std;

int main() 
{
    string s;
    cin>>s;
    int k;
    cin>>k;
    k%=26;
    for(int i=0;i<s.length();i++) 
    {
        int c=s[i];
        c+=k;
        if(c>'z') 
        {
           c=96+(c%122); 
        }
        s[i]=(char)c;
    }
    cout<<s<<endl;
    return 0;
}

Sezar Şifrəsi üçün Java Proqramı

import java.util.Scanner;

class sum
{
    public static void main(String[] args)
    {
        Scanner sr = new Scanner(System.in);
        String s = sr.next();
        int k = sr.nextInt();
        k=k%26;
        for(int i=0;i<s.length();i++) 
        { 
            int c=s.charAt(i); 
            c+=k; 
            if(c>'z') 
            {
                c=96+(c%122); 
            } 
            System.out.print((char)c); 
        }
        System.out.println();
    }
}




tutorialcup
12
fgfadumxogb

Sezar Şifrəsi üçün Mürəkkəblik Analizi

Zaman mürəkkəbliyi

O (n) hara n verilən sətrin ölçüsüdür. Burada char simli ilə bütün simli keçirik və cari xarakteri sabit vaxtda dəyişdiririk.

Kosmik Mürəkkəblik

O (1) çünki burada heç bir köməkçi yerdən istifadə etmirik. Sadəcə cavabı yazdırın və ya verilən sətri yeniləyin.

Translate »