2023年藍橋杯 初賽試題 密碼發生器

2022-08-30 15:45:22 字數 1529 閱讀 9403

題目分析:

在對銀行賬戶等重要許可權設定密碼的時候,我們常常遇到這樣的煩惱:如果為了好記用生日吧,容易被破解,不安全;如果設定不好記的密碼,又擔心自己也會忘記;如果寫在紙上,擔心紙張被別人發現或弄丟了...

這個程式的任務就是把一串拼音字母轉換為6位數字(密碼)。我們可以使用任何好記的拼音串(比如名字,王喜明,就寫:wangximing)作為輸入,程式輸出6位數字。

變換的過程如下:

第一步. 把字串6個一組摺疊起來,比如wangximing則變為:

wangxi

ming 

第二步. 把所有垂直在同乙個位置的字元的ascii碼值相加,得出6個數字,如上面的例子,則得出:

228 202 220 206 120 105

第三步. 再把每個數字「縮位」處理:就是把每個位的數字相加,得出的數字如果不是一位數字,就再縮位,直到變成一位數字為止。例如: 228 => 2+2+8=12 => 1+2=3

上面的數字縮位後變為:344836, 這就是程式最終的輸出結果!

要求程式從標準輸入接收資料,在標準輸出上輸出結果。

輸入格式為:第一行是乙個整數n(<100),表示下邊有多少輸入行,接下來是n行字串,就是等待變換的字串。

輸出格式為:n行變換後的6位密碼。

例如,輸入:

5zhangfeng

wangximing

jiujingfazi

woaibeijingtiananmen

haohaoxuexi

則輸出:

772243

344836

297332

716652

875843

程式**:

#includeusing namespace std;

int sw(int n)//用於縮位的函式

else //n為2位數

t = a+b+c;

if(t>9) //t為兩位數

return t;

}void fun(string *str,int *a)//用於計算密碼的函式

}int main()

{ int n;

int num;

cin>>n;

string *str = new string [n];

for(int i=0;i>str[i];

for(int i=0;i

我在部落格上看到乙個南陽理工的同學寫的一段**,他是用÷9取餘數得到數字縮位之後的結果的,這樣處理程式的效率無疑極大地得到了提高,經驗證確實是正確的,但是為什麼是÷9取餘數,我並不明白=.=

程式**:

#include #include int main()

{ char a[101];

int t,i,n,j,k,m;

scanf("%d",&t);

while(t--)

{scanf("%s",a);

n=strlen(a);

for(i=0;i<6;i++)

{k=0;

for(j=i;j

2023年藍橋杯 初賽試題 轉方陣

問題描述 對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後變為 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如...

2023年藍橋杯 初賽試題 奇怪的比賽

題目描述 某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽...

2012 藍橋杯 初賽試題 大數乘法

大數乘法 對於32 位字長的機器,大約超過 20億,用 int型別就無法表示了,我們可以選擇 int64 型別,但無論怎樣擴充套件,固定的整數型別總是有表達的極限!如果對超級大整數進行精確運算呢?乙個簡單的辦法是 僅僅使用現有型別,但是把大整數的運算化解為若干小整數的運算,即所謂 分塊法 如圖 1....