close

原文

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2004

感謝和風信使大大翻譯

https://zerojudge.tw/ShowProblem?problemid=d123

 

C++

#include <iostream>
#include <set>
using namespace std;

int main()
{	
	int n,i,t,c=1;
	
	while(cin>>n)//輸入數列數量 
	{
		int b[n]={0};//放數列的陣列 
		set<int> d;//set裡面不能放重複的數字
				   //以此來計算兩數的和是否重複 
		d.clear();//清空 
		
		for(i=0;i<n;i++)//輸入數列 
		{
			cin>>b[i];
		}
		
		for(i=0;i<n;i++)//判斷數列是否為B2 
		{
			if(b[i]<1)//B2不能有負數或0
			{
				break;
			}
			else if(b[i-1]>=b[i]&&i-1>0)//B2後項比前項大 
			{							//i-1如果小於0可能會出問題 
				break;
			}
			for(t=i;t<n;t++)//兩數相加 
			{
				d.insert(b[i]+b[t]);//將兩數和放入set裡面
									//set不會重複放 
			}
		}
		
		if(d.size()==(n+1)*n/2)//如果set有少的話就代表此數列非B2 
		{					   //size就是取得set裡面放的數量 
			cout<<"Case #"<<c<<": It is a B2-Sequence.";
		}
		else
		{
			cout<<"Case #"<<c<<": It is not a B2-Sequence.";
		}
		
		cout<<endl<<endl;//要換兩行 
		c++;//結束換下一筆測資 
	}
	return 0;
}
 
arrow
arrow
    文章標籤
    UVa一星題
    全站熱搜
    創作者介紹
    創作者 豪CO 的頭像
    豪CO

    程式道路,必為豐富

    豪CO 發表在 痞客邦 留言(0) 人氣()