題目分析:
在對銀行賬戶等重要許可權設定密碼的時候,我們常常遇到這樣的煩惱:如果為了好記用生日吧,容易被破解,不安全;如果設定不好記的密碼,又擔心自己也會忘記;如果寫在紙上,擔心紙張被別人發現或弄丟了...
這個程式的任務就是把一串拼音字母轉換為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....