luogu.org 試煉場關卡1-5 簡單字串

~hsm~發表於2019-01-26

p1088 【noip2008普及】isbn號碼

題目

https://www.luogu.org/problemnew/show/P1055

程式碼

#include<bits/stdc++.h>
using namespace std;
char ISBN[13];
int b=1,sum=0;
int main()
{
	for(int i=0;i<13;i++)
		cin>>ISBN[i];
    for(int i=0;i<11;i++)
	{
   		if(ISBN[i]!='-')
    	{
    		sum+=(ISBN[i]-48)*b;
			b++;
		}	
	}
	sum=sum%11;
	if(sum==10)
	{
		if(ISBN[12]=='X') 
		{
			cout<<"Right"<<endl;
		}
		else 
		{
			ISBN[12]='X';
			cout<<ISBN;
		}
	}
	else
	{
		if(sum==(ISBN[12]-48)) 
		{
			cout<<"Right"<<endl;
		}
		else
		{
			ISBN[12]=sum+48;
			cout<<ISBN;
		}
	}
	return 0;
}

P1087 [USACO1.1]你的飛碟在這兒Your Ride Is Here

題目

https://www.luogu.org/problemnew/show/P1200

程式碼

#include<bits/stdc++.h>
using namespace std;
string comet,group;
int sum1=1,sum2=1;
int main()
{
	cin>>comet>>group;
	for (int i=0;i<comet.size();i++)
		sum1*=comet[i]-'A'+1;
	for (int i=0;i<group.size();i++)
		sum2*=group[i]-'A'+1;
	sum1%=47,sum2%=47;
	if (sum1==sum2) 
		puts("GO");
	else 
		puts("STAY");
	return 0;
}

P1308 統計單詞數

題目

https://www.luogu.org/problemnew/show/P1308

程式碼

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b;
    //用string庫,呼叫getline, 直接讀入一整行
    getline(cin,a);
    getline(cin,b);
    //轉換大小寫,可以都轉換為大寫,或者小寫
    for (int i=0;i<a.length();++i)
        a[i]=tolower(a[i]);
    for (int i=0;i<b.length();++i)
        b[i]=tolower(b[i]);
    //因為連起來的不算,所以要在前後加幾個空格,一定要是同樣多的,同量減同量,等於同量
    a=' '+a+' ';
    b=' '+b+' ';
    //先看看會不會找不到,用a.find()和string::npos
    if (b.find(a)==string::npos)
        puts("-1");
    //如果找得到
    else
	{
        int alpha=b.find(a);
        int beta=b.find(a),count=0;//計數器初始化為0
        while (beta!=string::npos)
		{
            ++count;//計數器
            beta=b.find(a,beta+1);
        }
        printf("%d %d",count,alpha);//輸出第一個和總共有幾個
    }
    //函式返回值為0,結束整個程式
    return 0;
}

相關文章