2014第六屆華為程式設計大賽初賽第四輪
/***********************************************************************
第一題 求n個整數的最大公約數
輸入
第一行: n個整數
第二行:各個整數 以空格隔開
輸出;公約數
例子:
input: 4
10 15 20 25
output: 5
**********************************************************************/
#include <stdio.h>
//轉轉相除法
int gcd(int x, int y)
{ //非遞迴形式
int rst=-1;
while(y)
{
rst=y;
y=x%y;
x=rst;
}
return rst;
//遞迴形式
// return (y == 0) ? x : gcd(y, x % y);
}
//求最小公倍數 lowest common multiple ( LCM )
//先得到兩個數的最大公約數,然後用兩個數的乘積除以該公約數
//比如 lcm(10,15) =10*15/gcd(10,15)=150/5=30;
int lcm(int x,int y)
{
int rst=gcd(x,y);
return (x*y)/rst;
}
//獲取n個整數的最大公約數
int Getgcd(int a[],int len)
{
int rst=gcd(a[0],a[1]);
for(int j=2;j<len;j++)
rst=gcd(a[j],rst);
return rst;
}
//獲取n個整數的最小公倍數
int GetLcm(int a[],int len)
{
int rst=lcm(a[0],a[1]);
for(int j=2;j<len;j++)
rst=lcm(a[j],rst);
return rst;
}
int main()
{
int num;
scanf("%d",&num);
int *a=new int[num];
if(NULL==a)
return -1;
int i=0;
char ch;
while(scanf("%d%c",&a[i++],&ch)!=EOF)
{
if(ch=='\n')
break;
}
int rst;
if(num==1)
rst=a[0];
else
{
printf("%d\n",Getgcd(a,num)); //最大公約數
// printf("最小公倍數:%d\n",GetLcm(a,num));
}
delete [] a;
a=NULL;
return 0;
}
第二題 實現一個開放的書名檢索庫 |
|||
描述: |
實現一個開放的書名檢索庫,庫中儲存了若干個書名 使用者可以: 重要格式說明 書名: 第一個單詞前和最後一個單詞後沒有空格 搜尋條件: 輸出說明: 1. 如果沒有查詢到書名,那麼輸出一對雙引號: "" 2. 如果存在多行輸出(查詢到多本書名),那麼輸出結果按字典序排序 舉例 輸入: AddBooks End 輸出: "writing gnu emacs extensions" 輸入: AddBooks 輸出: "aspect oriented analysis and design the theme approach" "net test automation recipes a problem solution approach" 規格 0<=書名個數範圍<=200
|
|
|
執行時間限制: |
無限制 |
||
記憶體限制: |
無限制 |
||
輸入: |
AddBooks [書名列表:每行一個書名,書名在雙引號中] SearchBooks [關鍵字:多個關鍵字用空格分隔,關鍵字在雙引號中] End
|
||
輸出: |
1. 查詢到的書名,查詢到多個書名,以多行顯示,書名在雙引號內 2. 如果沒有查詢到書名,那麼輸出: "" 3. 如果存在多行輸出(查詢到多本書名),那麼輸出結果按字典序排序 如下: "aspect oriented analysis and design the theme approach" "net test automation recipes a problem solution approach"
如果一個字元相等,那麼順序比較後面的字元,直到找到一個字元不相等為止 |
||
樣例輸入: |
AddBooks "high performance mysqlsecond edition" "writing gnu emacs extensions" "web client programming with perlautomating tasks" "net test automation recipes a problem solution approach" "photoreading" "pro wfwindows workflow in net" "aspect oriented analysis and design the theme approach" SearchBooks "extensions gnu" End |
||
樣例輸出: |
"writing gnu emacs extensions" |
||
答案提示: |
|
// C語言版 C++環境下編譯
#include <stdio.h>
#include <string.h>
int stringcmp(const void *elem1, const void *elem2 )
{
return strcmp((char*)elem1,(char*)elem2);
}
int main()
{
char BookName[200][510];
char searchkey[3][50];
char strtmp[510];
gets(strtmp);
if(strcmp(strtmp,"AddBooks")!=0)
return -1;
int index=0;
while(gets(strtmp)!=NULL)
{
if(strcmp(strtmp,"SearchBooks")==0)
break;
else
strcpy(BookName[index++],strtmp);
}
int len1=index;
index=0;
int len2=0;
while(gets(strtmp)!=NULL)
{
if(strcmp(strtmp,"End")==0)
break;
else {
char *p=strtok(strtmp+1," \"");
while(p){
strcpy(searchkey[index++],p);
p=strtok(NULL,"\"");
len2++;
}
}
}
char pos[200][510];
memset(pos,-1,sizeof(pos));
bool flag[3];
memset(flag,0,3);
int k;
index=0;
for(int i=0;i<len1;i++)
{
bool sum=true;
memset(flag,0,3);
k=0;
for(int j=0;j<len2;j++)
{
if(strstr(BookName[i],searchkey[j]))
flag[k++]=true;
else
break;
}
for(k=0;k<len2;k++)
sum &=flag[k];
if(sum)
strcpy(pos[index++],BookName[i]);
}
int len3=index;
if(0==len3)
puts("\"");
else
{
qsort(pos,len3,510,stringcmp);
for(k=0;k<len3;k++)
puts(pos[k]);
}
return 0;
}
大華為的伺服器 太卡... 第二題沒測試。
C++版
//C++ 版 STL很強大
#include <iostream>
#include <vector>
#include <string>
#include <algorithm> //sort
#include <sstream> // istringstream
using namespace std;
vector<string> Books;
vector<string> searchlist;
int main()
{
string str;
while(getline(cin,str) && str != "SearchBooks")
Books.push_back(str);
while(getline(cin,str) && str != "End")
{
str = str.substr(1,str.size()-2);
istringstream iss(str);
while(iss>>str)
searchlist.push_back(str);
}
vector<string> rst;
bool flag;
for(int i=0;i < Books.size();i++)
{
flag=true;
for(int j=0; j<searchlist.size();j++)
{
if(strstr(Books[i].c_str(),searchlist[j].c_str()))
{
flag &= true;
continue;
}
else flag &= false;
}
if(flag)
rst.push_back(Books[i]);
}
if(rst.size()==0)
cout<<"\"\""<<endl;
else
{
sort(rst.begin(),rst.end());
for(int k=0;k<rst.size();k++)
cout<<rst[k]<<endl;
}
return 0;
}
相關文章
- 華中農業大學第十三屆程式設計競賽程式設計
- 【比賽覆盤】2024第七屆“傳智杯”全國大學生計算機大賽程式設計挑戰賽(初賽第一場)計算機程式設計
- 2020 年百度之星程式設計大賽 - 初賽三程式設計
- 2020年百度之星程式設計大賽-初賽二程式設計
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- 第十五屆浙江大學寧波理工學院程式設計大賽(同步賽)程式設計
- 程式設計大賽WBS程式設計
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- "華為杯"華南理工大學程式設計競賽(同步賽) H題解 還沒寫程式設計
- 第六屆·2024 MindSpore 量子計算駭客松熱身賽賽題解讀
- 幽默:程式設計師吹牛大賽程式設計師
- 資料競賽:第四屆工業大資料競賽-虛擬測量大資料
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 清華校友三創論壇成功舉辦,第四屆清華校友三創大賽京津冀賽區正式啟動
- 中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) F.爬塔(DP)程式設計
- 第15屆浙江省大學生程式設計競賽D題程式設計
- 程式設計天才“樓教主”—— 專訪兩屆“黑客杯”世界程式設計大賽季軍、清華大學博士生樓天城...程式設計黑客
- 【比賽回顧】廣工2020程式設計初賽D-好人easy程式設計
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- 第四屆“網鼎杯”網路安全大賽 - 青龍組
- 第二屆“重科杯”重慶科技大學程式設計競賽(同步賽)ptlks的題解(2024.5.18)程式設計
- [題解][2021-2022年度國際大學生程式設計競賽第10屆陝西省程式設計競賽] Type The Strings程式設計
- 第 10 屆 CCPC 中國大學生程式設計競賽濟南站 遊記程式設計
- 浙江大學AAA戰隊問鼎冠軍!第六屆TCTF新星賽決賽圓滿結束
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 2018華為網路技術大賽
- 第二屆“祥雲杯”網路安全大賽暨吉林省第四屆大學生網路安全大賽火熱報名中
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 技術更高,設計更遠:華為全屋智慧設計大賽的審美之躍
- 巔峰對決,第四屆全球資料庫大賽—PolarDB效能挑戰賽圓滿收官資料庫
- 第六屆藍橋杯省賽CC++B組C++
- 第二屆隴劍杯 初賽全WP
- 2024年第九屆CCCC團體程式設計天梯賽 遊記程式設計
- 紹興市大學生程式設計競賽程式設計
- 第十四屆全國大學生資訊保安競賽創新實踐能力賽(華中賽區)比賽成功舉辦
- 第十屆中國大學生程式設計競賽 重慶站(CCPC 2024 Chongqing Site)程式設計
- 中新賽克FlowWare重磅亮相第六屆數字中國建設峰會