Bubble Sort
AOJの問題
Aizu Online Judge
みんな大好きBubble Sort
一回のfor文で対象配列の一番最大(または一番最小)を決めることができるやつだと思ってたらこいつは違った。
Python 3系で実装
def printer(A): ret = str(A[0]) for i in range(1, len(A)): ret += " " + str(A[i]) print(ret) return True def bubblesort(A): ret = 0 flag = True num = len(A) while flag is True: flag = False for i in reversed(range(1, num)): if A[i - 1] > A[i]: tmp = A[i - 1] A[i - 1] = A[i] A[i] = tmp flag = True ret += 1 # num -= 1 return ret n = int(input()) A = list(map(int, input().split())) ans = bubblesort(A) # print(A) printer(A) print(ans)
Maximum Profit
AOJの問題
Aizu Online Judge
Python 3系で実装
言われた通り書いただけ。メモリを節約、動作はO(n)
n = int(input()) minv = int(input()) maxp = -1 * 10 ** 9 for _ in range(n - 1): tmp = int(input()) maxp = max(maxp, tmp - minv) minv = min(minv, tmp) print(maxp)
isPrime
AOJの問題
Aizu Online Judge
Python 3系で実装
filter関数やlambda関数を使ってみた。
なんか美しくはない気がする。もっと綺麗にかけないものかね。
def isPrime(num): if num == 2 or num == 3: return True elif num % 2 == 0: return False p = 3 sqrt_num = int(num ** 0.5) while True: if num % p == 0: return False if sqrt_num >= p: p += 2 else: return True n = int(input()) input_num = [int(input()) for _ in range(n)] print(len(list(filter(lambda x: isPrime(x), input_num))))
Greatest Common Divisor
AOJの問題
Aizu Online Judge
ユークリッドの互除法
特に言うことなし。Python 3系で書いた。
そういや、証明はできんな・・・なんでなんやろ・・・
def gcd(a, b): la = max(a, b) sm = min(a, b) if la % sm == 0: return sm else: return gcd(sm, la % sm) a, b = map(int, input().split()) print(gcd(a, b))
AOJプログラミング入門 9_A:Finding a Word
C++で解いた。全部小文字にするのはめんどくさいね。
#include<iostream> #include<string> #include<cstdlib> using namespace std; string strlower(string str){ for(int i=0, l=str.size();i<l;i++){ if(str[i]>='A'&&str[i]<='Z')str[i]+=('a'-'A'); } return(str); } int main(){ string input = ""; string search = ""; cin >> search; int ans=0; while(cin >> input){ if(input == "END_OF_TEXT")break; if(strlower(input)==strlower(search))ans++; } cout << ans << endl; return 0; }