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;
}
相關文章
- 2014第六屆華為程式設計大賽初賽第一輪程式設計
- 2014第六屆華為創新杯程式設計大賽初賽解題報告程式設計
- 第六屆華為創新杯程式設計大賽-進階1第1輪程式設計
- 第六屆華為創新杯程式設計大賽-進階1第3輪程式設計
- 第十五屆浙江大學寧波理工學院程式設計大賽(同步賽)程式設計
- 2020年百度之星程式設計大賽-初賽二程式設計
- 2020 年百度之星程式設計大賽 - 初賽三程式設計
- 程式設計大賽WBS程式設計
- 山東省第六屆ACM大學生程式設計競賽-Single Round Math(大數除法)ACM程式設計
- 中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) F.爬塔(DP)程式設計
- HDU-2017"百度之星"程式設計大賽-初賽(B)-補題程式設計
- 資料競賽:第四屆工業大資料競賽-虛擬測量大資料
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- CU--Shell程式設計大賽程式設計
- 幽默:程式設計師吹牛大賽程式設計師
- 第六屆·2024 MindSpore 量子計算駭客松熱身賽賽題解讀
- 山東省第六屆ACM大學生程式設計競賽-Square Number(完全平方數)ACM程式設計
- 山東省第六屆ACM大學生程式設計競賽-Lowest Unique Price(桶排序)ACM程式設計排序
- 山東省第四屆ACM大學生程式設計競賽-Rescue The Princess(計算幾何)ACM程式設計
- 第四屆“網鼎杯”網路安全大賽 - 青龍組
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- 2014年藍橋杯程式設計大賽山東省賽區成績公佈程式設計
- 2014年北京師範大學新生程式設計競賽網路賽程式設計
- 程式設計之美初賽第一場--焦距程式設計
- 程式設計之美初賽第一場--樹程式設計
- 【十萬大獎 ▎即將開賽】2017第三屆SSCTF全國網路安全大賽—5月6日線上初賽
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- 山東省第四屆ACM大學生程式設計競賽-Contest Print Server(模擬)ACM程式設計Server
- 巔峰對決,第四屆全球資料庫大賽—PolarDB效能挑戰賽圓滿收官資料庫
- 第二屆隴劍杯 初賽全WP
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 第六屆藍橋杯省賽CC++B組C++
- 華中農業大學第十三屆程式設計競賽程式設計
- 第二屆“祥雲杯”網路安全大賽暨吉林省第四屆大學生網路安全大賽火熱報名中
- 【比賽回顧】廣工2020程式設計初賽D-好人easy程式設計
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- 綠盟科技助力2021年中國技能大賽-西藏自治區第六屆網路安全技能大賽圓滿落幕
- 藍橋杯2014年第五屆決賽C_C++程式設計本科B組C++程式設計