外貿(mào)網(wǎng)站建設(shè) 公司價格2345網(wǎng)址導(dǎo)航瀏覽器
目錄
1.打翻的鬧鐘
2.智斗鍋雞
3.文件列表
1.打翻的鬧鐘
問題描述
馮迭伊曼晚上刷吉米多維奇刷的太勤奮了,幾乎天天遲到。崔神為了讓VonDieEman改掉遲到的壞毛病,給他買了個鬧鐘。
一天早上,老馮被鬧鐘吵醒,他隨手將鬧鐘按掉丟到一邊。不過他突然想起今天還要虐微積分,于是瞅了一眼鬧鐘:
這個鬧鐘上只有時針和分針。上面還沒數(shù)字(崔神:……),只有12個刻度,每30°一個刻度。時針如果恰好指向某個刻度i,則說明這時恰好是i點整(或i+12點整)。因此只有在00:00或12:00時,時針和分針才會指向同一個刻度:刻度0。
但是老馮的鬧鐘被打翻了,他分不出哪根刻度是刻度0,因此他也不知道現(xiàn)在是幾點。于是他隨便指定了一根刻度當(dāng)刻度0,讀了一下時間,結(jié)果(你懂的)……但是他可以通過測量,得到時針、分針與他指定刻度之間的角度大小(順時針)。
?
老馮隨便把一根刻度當(dāng)做刻度0,然后他量得時針的角度為70°,分針的角度為300°,然后他讀了一下時間。2:50??這比例不對啊。最后老馮終于將鬧鐘翻回了正確的位置:原來是8:20。哈哈,老馮你不用掙扎了,又遲到了。
老馮想知道,如果知道某刻度當(dāng)刻度0后時針、分針的角度,能否算出正確的時間?如果能,或存在多解,那么當(dāng)前時間最早是什么時候?
輸入格式
第一行一個整數(shù)T,表示數(shù)據(jù)組數(shù)。
接下來T行,每行兩個整數(shù)H、M,分別表示老馮量出的時針、分針的角度。
輸出格式
輸出T行,每行一個字符串。
如果存在解,輸出HH:MM,表示最早的時間(比如09:11表示9點11分);否則輸出“orz VonDieEman”(不含引號)。
樣例輸入
5
70 300
90 120
240 36
19 19
10 12
樣例輸出
08:20
11:00
orz VonDieEman
orz VonDieEman
orz VonDieEman
樣例解釋
果斷不解釋。
數(shù)據(jù)規(guī)模
70%的數(shù)據(jù),T≤5,不存在無解情況。
100%的數(shù)據(jù),T≤100,0≤H,M<360。
示例代碼
#include<iostream>
using namespace std;int main() {int T,hour,minute;cin >> T;for (int i = 0; i < T; i++) {cin >> hour >> minute;int temp1 = hour % 30;temp1 = temp1 * 2;//分int temp2 = temp1 * 6;//分鐘所占的度數(shù)//找零刻度線int temp3;if (minute > temp2) {//在左邊temp3 = (minute - temp2) % 360;}else {temp3 = minute - temp2+360;}if (temp3 % 30 != 0) {//如果刻度線不在針上cout << "orz VonDieEman" << endl;continue;}int temp4;if (temp3 > hour) {temp4 = 360 - (temp3 - hour);}else {temp4 = hour - temp3;}temp4 = temp4 / 30;if (temp4 < 10) {cout << '0';}cout << temp4 << ':';if (temp1 < 10) {cout << '0';}cout << temp1 << endl;}return 0;
}
2.智斗鍋雞
問題描述
郭雞是數(shù)學(xué)系里一個智商很低卻十分好勝的同學(xué)。
自從他在“a+b problem”這道題里AC以后,他便覺得自己比貴系同學(xué)們厲害了。
于是他找到了你,發(fā)起了挑戰(zhàn),挑戰(zhàn)內(nèi)容就是一個叫取石子的游戲。
這個游戲里,首先會有兩堆石子,分別有a和b粒石子。
兩個人輪流操作,每次操作必須從其中一堆里取出一定粒數(shù)的石子(不能不取,可以取完)。
在有限次操作后,會有一個人把最后的石子取走(最后一次當(dāng)然不一定是只取一粒),那個人就是勝利者。
由于郭雞是自大的,于是他希望由你選擇先取或后取。
作為一名優(yōu)秀的酒井人,你要在這個游戲里徹底打敗郭雞,使游戲開始以后郭雞沒有任何機會獲得勝利。
輸入格式
輸入共n+2行,第一行是一個整數(shù)n,表示郭雞取石子次數(shù)。
第二行是兩個正整數(shù)a和b,意義見題目描述。
下面n行,每行有兩個整數(shù),用空格隔開,表示郭雞每次操作的堆號(1或2)及他取的石子數(shù)。
(注意:在游戲過程中,事實上你是不知道郭雞接下來會怎么取的,所以我們要求你每一步操作都要保證郭雞失敗)
輸入保證你能在他取完n次后的操作中獲勝。
輸出格式
輸出有兩種可能。
若你選擇先取,則輸出n+2行,第一行輸出"Fisrt"表示先取,之后n+1行每一行是你每次操作的堆號(1或2)及取出的石子數(shù)。
若你選擇后取,則輸出n+1行,第一行輸出"Second"表示后取,之后n行每一行是你每次操作的堆號(1或2)及取出的石子數(shù)。
"First"與"Second"的輸出均不帶引號。
樣例輸入
4
10 10
1 4
2 3
1 2
2 1
樣例輸出
Second
2 4
1 3
2 2
1 1
樣例輸入
1
1 2
1 1
樣例輸出
First
2 1
2 1
數(shù)據(jù)規(guī)模和約定
0<a,b<1000
示例代碼
#include<iostream>
using namespace std;int main() {int n, a, b;cin >> n;cin >> a >> b;if (a != b) {//先手,使得a和b相等cout << "First" << endl;if (a > b) {cout << 1 <<" "<< a - b << endl;}else {cout << 2 << " " << b - a << endl;}}else {cout << "Second" << endl;}int dui, shu;for (int i = 0; i < n; i++) {//他干什么,你就和他反著來cin >> dui >> shu;if (dui == 2) {cout << 1 << " " << shu << endl;}else {cout << 2 << " " << shu << endl;}}return 0;
}
3.文件列表
感謝大佬 https://blog.csdn.net/ymzqwq/article/details/97781340
問題描述
BSOI在線評測機被不明身份的人入侵了!!系統(tǒng)中大量的數(shù)據(jù)遭到惡意破壞,數(shù)據(jù)文件殘缺不全?,F(xiàn)在,老師正在盡力搶救數(shù)據(jù)文件。為了檢查數(shù)據(jù)文件是否完整,老師打印出了所有文件的列表,但數(shù)據(jù)文件太多,老師眼睛都要看花了。所以,為了方便老師檢查,需要你寫個程序處理一下文件列表,轉(zhuǎn)換成下面這樣統(tǒng)一的格式:(//后面為注釋)
data //data文件夾,根目錄
|----prob //data下面的文件夾
| |----a.in //prob下面的文件
| |----a.out
|----qq //data下面的文件夾
| |----new //qq下面的文件夾
| | |----ok.txt //new下面的文件
| |----old //空文件夾
|----xxx.rmvb
生成的列表格式有如下要求:
1.屬于同一層的文件或文件夾位于相同的縮進處,相鄰兩層文件間差距5個字符;
2.每個文件夾或文件前有4個’-’(根目錄除外),文件夾下方屬于文件夾的部分有’|’;
3.屬于統(tǒng)一文件夾下的文件或子文件夾按字典序排列;
輸入格式
第一行一個整數(shù)n( n<=50 ),表示總共的文件數(shù)目;
接下來n行,每行描述一個文件的路徑,路徑以 '/' 作為文件分隔符;
所有文件( 及文件夾 )名均由小寫字母和英文點組成;所有輸入的根目錄都是一樣的,文件名長度不超過 10 個字符 ,
每個文件夾下不超過15個文件,不超過 5 層。
輸出格式
輸出符合要求的文件列表?
樣例輸入
6
mydoc/abcd/abc.txt
mydoc/dd/libexec.a
mydoc/stdio.h
mydoc/abcde
mydoc/abcd/zzz/game.cpp
mydoc/abcd/new
樣例輸出
mydoc
|----abcd
|? ? ?|----abc.txt
|? ? ?|----new
|? ? ?|----zzz
|? ? ?|? ? ?|----game.cpp
|----dd
|? ? ?|----libexec.a
|----stdio.h
數(shù)據(jù)規(guī)模和約定
對于30%的數(shù)據(jù),根目錄下只有文件,沒有文件夾?
?示例代碼
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 100002;
int n;
string s;
vector<string> c[N];
string str[N];int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> str[i];}sort(str + 1, str + 1 + n);//對字符串進行排序for(int i = 1; i <= n;i++) {string s = str[i].substr(0, str[i].size());//將該字符串賦值給sc[i].resize(0);//將容器初始化為0int pre = 0;//字符索引for(int j=0;j<s.size();j++)if (s[j] == '/') {string ss = s.substr(pre, j - pre);//將/前的字符裝入ss中c[i].push_back(ss);pre = j + 1;}c[i].push_back(s.substr(pre, s.size() - pre)); //按'/'分割,最后一個文件存入c[i]int flag = 0;for (int j = 0; j < c[i].size(); j++) {if (flag || j >= c[i - 1].size() || c[i][j] != c[i - 1][j]) { //之前沒輸出過for (int k = 0; k < j - 1; k++) {//j-1個cout<<"| ";}if (j) {//存在即輸出,只要不是根目錄cout << "|----";}cout << c[i][j] << endl;flag = 1; //flag表示c[i][j]和c[i-1][j]是在同一個文件夾里}}}return 0;
}
?