密碼發生器ios
在對銀行帳戶等重要權限設置密碼的時候,咱們經常遇到這樣的煩惱:若是爲了好記用生日吧,容易被破解,不安全;若是設置很差記的密碼,又擔憂本身也會忘記;若是寫在紙上,擔憂紙張被別人發現或弄丟了...c++
這個程序的任務就是把一串拼音字母轉換爲6位數字(密碼)。咱們可使用任何好記的拼音串(好比名字,王喜明,就寫:wangximing)做爲輸入,程序輸出6位數字。編程
變換的過程以下:安全
第一步. 把字符串6個一組摺疊起來,好比wangximing則變爲:函數
wangxispa
ming操作系統
第二步. 把全部垂直在同一個位置的字符的ascii碼值相加,得出6個數字,如上面的例子,則得出:調試
228 202 220 206 120 105code
第三步. 再把每一個數字「縮位」處理:就是把每一個位的數字相加,得出的數字若是不是一位數字,就再縮位,直到變成一位數字爲止。例如: 228 => 2+2+8=12 => 1+2=3blog
上面的數字縮位後變爲:344836, 這就是程序最終的輸出結果!
要求程序從標準輸入接收數據,在標準輸出上輸出結果。
輸入格式爲:第一行是一個整數n(<100),表示下邊有多少輸入行,接下來是n行字符串,就是等待變換的字符串。
輸出格式爲:n行變換後的6位密碼。
例如,輸入:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
則輸出:
772243
344836
297332
716652
875843
題解:
雖然不知道對錯,但感受還好;
代碼:
#include <cstdio> #include <iostream> #include<string.h> using namespace std; int ps[6]; char str[110]; int main(){ int n; scanf("%d",&n); while(n--){ scanf("%s",str); memset(ps,0,sizeof(ps)); for(int i=0;str[i];i++){ ps[i%6]+=str[i]; } for(int i=0;i<6;i++){ int temp; while(ps[i]>9){ temp=0; while(ps[i]){ temp+=ps[i]%10; ps[i]/=10; } ps[i]=temp; } } for(int i=0;i<6;i++)printf("%d",ps[i]);puts(""); } return 0; }
奪冠機率
足球比賽具備必定程度的偶然性,弱隊也有打敗強隊的可能。
假設有甲、乙、丙、丁四個球隊。根據他們過去比賽的成績,得出每一個隊與另外一個隊對陣時取勝的機率表:
甲 乙 丙 丁
甲 - 0.1 0.3 0.5
乙 0.9 - 0.7 0.4
丙 0.7 0.3 - 0.2
丁 0.5 0.6 0.8 -
數據含義:甲對乙的取勝機率爲0.1,丙對乙的勝率爲0.3,...
如今要舉行一次錦標賽。雙方抽籤,分兩個組比,獲勝的兩個隊再爭奪冠軍。(參見【1.jpg】)
請你進行10萬次模擬,計算出甲隊奪冠的機率。
注意:
請仔細調試!您的程序只有能運行出正確結果的時候纔有機會得分!
在評卷時使用的輸入數據與試卷中給出的實例數據多是不一樣的。
請把全部函數寫在同一個文件中,調試好後,存入與【考生文件夾】下對應題號的「解答.txt」中便可。
相關的工程文件不要拷入。
源代碼中不能能使用諸如繪圖、Win32API、中斷調用、硬件操做或與操做系統相關的API。
容許使用STL類庫,但不能使用MFC或ATL等非ANSI c++標準的類庫。例如,不能使用CString類型(屬於MFC類庫)。
題解:分別考慮對戰狀況;求機率和除以次數便可;
代碼:
#include<stdio.h> #include<time.h> #include<stdlib.h> int main(){ double t[3]; t[0]=0.1*0.3*0.2+0.1*0.5*0.8; t[1]=0.3*0.5*0.6+0.3*0.1*0.4; t[2]=0.5*0.3*0.3+0.5*0.1*0.7; srand(time(0)); double ans=0; for(int i=1;i<=100000;i++){ int x=rand()%3; ans+=t[x]; } printf("%lf\n",ans/100000); return 0; }
取球遊戲
今盒子裏有n個小球,A、B兩人輪流從盒中取球,每一個人均可以看到另外一我的取了多少個,也能夠看到盒中還剩下多少個,而且兩人都很聰明,不會作出錯誤的判斷。
咱們約定:
每一個人從盒子中取出的球的數目必須是:1,3,7或者8個。
輪到某一方取球時不能棄權!
A先取球,而後雙方交替取球,直到取完。
被迫拿到最後一個球的一方爲負方(輸方)
請編程肯定出在雙方都不判斷失誤的狀況下,對於特定的初始球數,A是否能贏?
程序運行時,從標準輸入得到數據,其格式以下:
先是一個整數n(n<100),表示接下來有n個整數。而後是n個整數,每一個佔一行(整數<10000),表示初始球數。
程序則輸出n行,表示A的輸贏狀況(輸爲0,贏爲1)。
例如,用戶輸入:
4
1
2
10
18
則程序應該輸出:
0
1
1
0
題解:從必敗點找必勝點就好;
代碼:
#include<stdio.h> const int MAXN=10010; int step[4]={1,3,7,8}; int a[MAXN]; int main(){ a[1]=0; for(int i=1;i<MAXN;i++){ if(!a[i]) for(int j=0;j<4;j++){ a[i+step[j]]=1; } } int T; scanf("%d",&T); while(T--){ int x; scanf("%d",&x); printf("%d\n",a[x]); } return 0; }