iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
自我挑戰組

30天從0開始的NCPC之旅系列 第 15

[Day 15] UVA10008 &UVA11063

  • 分享至 

  • xImage
  •  

UVA10008

點我進UVA10008

輸入/輸出格式

第一行為輸入的字串數量,輸出字母頻率由大至小排列,若頻率相同,由字母小的先輸出。

解題思路

每輸入完一組字串,先排除掉不是A-Z範圍的字後,再將字源轉成大寫。
隨後即開始計數到該字元ASCII的陣列中,並計算共計字元長度
再由大至小輸出頻率高到低的字元

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main(){

	int n,count[300]={0},len=0;
	string s;
	
	cin>>n;
	cin.ignore(2,'\n');
	while(n--){
		getline(cin,s);
		for(int i=0;i<s.length();i++){
			count[toupper(s[i])]++;
			len++;
		}
	}
	while(--len){
		for(char i='A';i<='Z';i++){
			if(count[i]==len)
				cout<<i<<" "<<count[i]<<endl;
		}
	}

}

UVA11063

點我進UVA11063

解題思路

判斷是否為B2-sequence,
B2-sequence的定義:
1.數字要1<=b1<b2<b3...
2.此數列內任兩數的總和是不一樣的

#include<iostream>
#include<set>
using namespace std;
int main(){
  int n,c=1;//c=輸出的case數
  set<int> s;//用set存相加的數值,因為set裡的元素不能重複
  while(cin>>n){
   int a[n];//輸入的數列
   s.clear();//記得清除
  for(int i=0;i<n;i++){
   cin>>a[i];
  }
  for(int i=0;i<n;i++){
   if(a[i]<0)break;//B2數列一定是正整數
    else if(a[i+1]<=a[i]&&i>=0)break;//B2數列的後項一定大於前項
    for(int j=i;j<n;j++){
     s.insert(a[i]+a[j]);//將相加的值插入set
    }
  }
  //檢查相加的值是否都有
  if(s.size()==(1+n)*n/2) cout<<"Case #"<<c<<": It is a B2-Sequence."<<endl<<endl;
            else cout<<"Case #"<<c<<": It is not a B2-Sequence."<<endl<<endl;
  
  c++;
  }


 return 0;
}

上一篇
[Day14] UVA10922 & UVA11332 & UVA10050
下一篇
[Day 16] UVA948 & UVA10041& UVA12149
系列文
30天從0開始的NCPC之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言