「aoj2481~2490」の編集履歴(バックアップ)一覧に戻る

aoj2481~2490 - (2013/03/20 (水) 15:25:54) のソース

*2489 Palindromic Number
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2489
与えれた整数nに最も近い回文数を答えよという問題。
複数ある場合低い方を答えとせよ。

解法
簡単な問題なので全部生成してstd::setから探すだけです。

 #include<stdio.h>
 #include<set>
 int main(){
 	std::set<int> memo;
 	std::set<int>::iterator it;
 	memo.insert(0);
  	memo.insert(10001);
 	for(int i=1;i<=9;i++){
 		memo.insert(i);
 		memo.insert(i*10+i);
 		for(int j=0;j<=9;j++){
 			memo.insert(i*100+j*10+i);
 			memo.insert(i*1000+j*100+j*10+i);
 		}
  	}
 	int n;
 	scanf("%d",&n);
 	it=memo.lower_bound(n);
 	int ans1=(*it);
 	it--;
 	int ans2=(*it);
 	printf("%d\n",n-ans2>ans1-n?ans1:ans2);
 	
 }






*2490 Parentheses
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2490
()がきちんと対応してるか判断する問題。

解法
()の閉じ対応を数えていくだけの簡単な問題です。


 #include<stdio.h> 
 int main(){
 	int count=0;
 	int n,m;
 	char s[3],c1;
  	bool ok=true;
 	scanf("%d",&n);
 	while(n--){
 		scanf("%s %d",&s,&m);
 		c1=s[0];
 		if(c1=='('){
 			count+=m;
 		}else if(c1==')'){
 			if(count<m){
 				ok=false;
 			}else{
 				count-=m;
 			}
 		}
 	}
 	printf("%s\n",ok==true&&count==0?"YES":"NO");
 }