※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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

aoj2481~2490 - (2013/03/20 (水) 15:01:51) の最新版との変更点

追加された行は青色になります。

削除された行は赤色になります。

 *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");
  }