奇安信(2019筆記試験問題)
7012 ワード
40パス選択(40分)2パスプログラミング(60分)
1.チーム末尾ラッキーナンバー
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明
N人は一列に並んで、1から5まで順番に数えて、5を報告する人は幸運者で、列を出ます.隊列の最後まで報告し,隊首から続けて報告する.このループに従います.問:列の最後に並んでいる人は何人目の幸運者ですか.注意:Nは100000未満の正の整数です.例えば、1人が1列に並んで、彼は1位の幸運者です.3人が一列に並んで、列の最後は2位のラッキーな人です.5人が一列に並んで、列の最後は1位のラッキーな人です.8人が一列に並んで、列の尾は3位のラッキーな人です.つまり求めます:N人は1列に并んで、列の尾は何位の幸运者ですか?
入力
チーム総人数
しゅつりょく
キャプテン翼のラッキーナンバー
サンプル入力
20
サンプル出力
4
プログラムC++
この考え方はアルゴリズムコンテスト入門経典の救済金支給(UVa 133)に由来するが,出力の値が異なることに注意する.また、この問題ではテストの値は大きくありません.残された問題はnが大きいとき、どのように解決しますか.後で更新します.
2.最長重複しない文字列を求める
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明
1行の文字列を入力して、中に重複文字が含まれていない長男の列を求めます.例えば、入力文字列がaaabbacccであれば、任意の位置からサブ文字列を切り取ることができ、これらのサブ文字列のうち、重複文字を含まない最長の文字列はabcであり、その長さは3である.
入力
文字列
しゅつりょく
重複文字を含まない最上位列の長さ
サンプル入力
bcdbcdee
サンプル出力
4
プログラムC++
1.チーム末尾ラッキーナンバー
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明
N人は一列に並んで、1から5まで順番に数えて、5を報告する人は幸運者で、列を出ます.隊列の最後まで報告し,隊首から続けて報告する.このループに従います.問:列の最後に並んでいる人は何人目の幸運者ですか.注意:Nは100000未満の正の整数です.例えば、1人が1列に並んで、彼は1位の幸運者です.3人が一列に並んで、列の最後は2位のラッキーな人です.5人が一列に並んで、列の最後は1位のラッキーな人です.8人が一列に並んで、列の尾は3位のラッキーな人です.つまり求めます:N人は1列に并んで、列の尾は何位の幸运者ですか?
入力
チーム総人数
しゅつりょく
キャプテン翼のラッキーナンバー
サンプル入力
20
サンプル出力
4
プログラムC++
この考え方はアルゴリズムコンテスト入門経典の救済金支給(UVa 133)に由来するが,出力の値が異なることに注意する.また、この問題ではテストの値は大きくありません.残された問題はnが大きいとき、どのように解決しますか.後で更新します.
#include
#include
using namespace std;
int que[50];
int n, m;
int go(int p, int t) // ,
{
while(t--)
{
//
do{ p = p % n + 1; }while(que[p]==0); // 0 ,
}
return p;
}
int main()
{
while ((cin >> n >> m) && n != 0)
{
for (int i = 1; i <= n; i++) que[i] = i;
int left = n; //
int p2 = 0; //
int num = 0;
while (left)
{
num++;
p2 = go(p2, m);
if(p2==n) break;//
// , n ,
// , p2 n , , num
//cout << setw(3) << p2;
left--;
que[p2] = 0;
// if (left) cout << ',';
}
cout << num << endl;
}
return 0;
}
2.最長重複しない文字列を求める
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明
1行の文字列を入力して、中に重複文字が含まれていない長男の列を求めます.例えば、入力文字列がaaabbacccであれば、任意の位置からサブ文字列を切り取ることができ、これらのサブ文字列のうち、重複文字を含まない最長の文字列はabcであり、その長さは3である.
入力
文字列
しゅつりょく
重複文字を含まない最上位列の長さ
サンプル入力
bcdbcdee
サンプル出力
4
プログラムC++
#include
#include
#include
using namespace std;
int LengthofLongeststring(string s)
{
int m[256]={0};
int left=0,ans=0;
for(int i=0;i<s.size();i++)
{
if(m[s[i]]==0 || m[s[i]]<left)
{
ans=max(ans,i-left+1);
}
else
{
left=m[s[i]];
}
m[s[i]]=i+1;
}
return ans;
}
int main()
{
string s;
getline(cin,s);
int ans;
ans=LengthofLongeststring(s);
cout << ans <<endl;
return 0;
}