first commit

This commit is contained in:
2018-10-20 23:27:07 +08:00
commit 25e4d62575
11 changed files with 594 additions and 0 deletions

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"files.associations": {
"iostream": "cpp",
"*.tcc": "cpp"
}
}

52
2010-06-09/100.cpp Normal file
View File

@ -0,0 +1,52 @@
/*
date:107/10/13
author:Chen Yi Jing
如果是奇數做某些事,是偶數就做其他事,有點無聊的題目
1. i 的值是要用來跑迴圈的不能改變
2. 題目並沒有說 start 會比 end 小
*/
#include<iostream>
using namespace std;
int main() {
int start = 0, end = 0, tmp = 1, max = 0, value = 0;
int temp = 0;
int change = 0;
while(cin >> start >> end) {
if (start > end) {
temp = end;
end = start;
start = temp;
change = 1;
}
for (int i = start; i <= end; i++) {
value = i;
while (value != 1) {
if (value % 2 != 0){
value = 3 * value + 1;
tmp++;
}
else {
value /= 2;
tmp++;
}
}
if(tmp > max)
max = tmp;
tmp = 1;
}
if (change == 1) {
temp = end;
end = start;
start = temp;
}
cout << start << " " << end << " " << max<< endl;
max = 0;
change = 0;
}
}

30
2010-06-09/10012.cpp Normal file
View File

@ -0,0 +1,30 @@
/*
date:107/10/13
author:Chen Yi Jing
要將一堆圓圈塞進一個長方形裡,求最小長方形面積
1. 圓該怎麼擺
*/
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int line = 0, n = 0;
while(cin >> line) {
for (int i = 0; i < line; i++) {
cin >> n;
float num[n];
for (int j = 0; j < n; j++) {
cin >> num[j];
}
for (int j = 0; j < n; j++) {
cout << num[j];
}
}
}
cout<< sqrt(1.5*1.5 - 0.5*0.5);
}

97
2010-06-09/10015.cpp Normal file
View File

@ -0,0 +1,97 @@
/*
date:107/10/13
author:Chen Yi Jing
人圍成圈,用質數去繞圈,質數數完被點到的人會被殺掉,求最後倖存者
1. TLE
*/
#include <iostream>
using namespace std;
int main() {
//將前 3500 個質數都算出來
int p[3502] = {0};
int number = 4;
int index = 3;
p[1] = 2;
p[2] = 3;
while (p[3501] == 0) {
for (int i = 2; i < number / 2 + 1; i++) {
if(number % i == 0) {
break;
}
if(i == number / 2) {
p[index] = number;
index++;
}
}
number++;
}
//輸入的部份
int n = 0;
int copy_n = 0;
while(cin >> n) {
copy_n = n;
int point = 0; //用來看現在數到哪個人
int counter = 0; //用來倒數質數的
int num[n + 1]; //某人是否存活 1:活 0:死
//初始化為 1
for (int k = 0; k <= n; k++) {
num[k] = 1;
}
if (n == 0)
break;
while (n > 1) { // 存活人數 > 一人
for (int i = 1; i < 3501; i++) {
if (p[i] % n != 0) {
counter = p[i] % n; //如果質數相對人數很大取餘數就好
}
else {
counter = n;
}
// cout << "質數 " << counter << endl;
while (counter > 0) {
if (point == copy_n) {
point = 0;
}
if (num[point + 1] == 1) {
counter--;
point++;
}
else {
point++;
}
if (counter == 0) {
num[point] = 0; //第 point 人被殺
n = n - 1; //總人數少 1
// cout << "人數 " << n << endl;
}
}
// cout << "被殺 " << point << endl;
// cout <<"---------------"<< endl;
if (n == 1)
break;
}
//輸出最後倖存者
if (n == 1) {
for (int i = 1; i <= copy_n; i++) {
if (num[i] == 1)
cout << i << endl;
}
}
}
}
cout << endl;
}

11
2010-06-09/10085.cpp Normal file
View File

@ -0,0 +1,11 @@
/*
date:107/10/13
author:Chen Yi Jing
3 * 3移動拼圖要變成目標樣子
*/
#include <iostream>
using namespace std;
int main () {
}

37
2010-06-09/10579.cpp Normal file
View File

@ -0,0 +1,37 @@
/*
date:107/10/13
author:Chen Yi Jing
Fibonacci Numbers
1. Fibonacci Numbers 要的很後面只能另尋他路owo
*/
#include <iostream>
using namespace std;
int big_add () {
fib = n1 + n2;
}
int change (int (&n1)[1000]) {
}
int main () {
int n = 0;
while (cin >> n) {
int n1[1000], n2[1000], temp[1000], fib[1000];
if (n == 1)
fib[0] = 1;
else if (n == 2)
fib[0] = 1;
else
while (n > 2) {
cout << fib << endl;
temp = n2;
n2 = fib;
n1 = n2;
n--;
}
}
}

50
2010-06-09/10664.cpp Normal file
View File

@ -0,0 +1,50 @@
/*
date:107/10/13
author:Chen Yi Jing
給很多數字,要判斷這些數字是否能分成兩堆等大的數字
1.沒有說一行幾個數字StringStream 做字串的分割(空白切割)
2.動態規劃 0 1 背包的問題可以用0-1背包的思想来进行解决。
先将n个数全部累加起来总数为sum这里和0-1背包的不同之处在于这里的价值和重量是一样的
所以将一个包的容量设置为sum/2,然后你就采用0-1背包思路从n个物品中尽可能的选择数字
使得数字的和最接近sum/2,那么这个解就是最优解。
*/
#include <iostream>
#include <sstream>
using namespace std;
int main() {
int n = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int temp = 0, index = 0;
int weight[20] = {0};
int sum = 0, str = 0;
string input;
getline(cin, input); //取得一行的輸入
stringstream ss (input); //StringStream 做字串的分割(空白切割)
while(ss >> str) {
weight[index] = str;
index++;
}
for (int j = 0; j < index; j++) {
sum += weight[j];
}
if (sum % 2 != 0) {
cout << "NO" << endl;
}
else {
cout << "YES" << endl;
}
cout << sum << endl;
//清空 ss
ss.str("");
ss.clear();
}
}

39
2010-10-11/10107.cpp Normal file
View File

@ -0,0 +1,39 @@
/*
date:107/10/20
author:Chen Yi Jing
算當下最新的中位數
*/
#include <iostream>
using namespace std;
int main() {
int input = 0, index = 0;
long long int num[10001];
int middle = 0, temp = 0;
while (cin >> input) {
num[index] = input;
index++;
//sort
for (int i = index - 2; i >= 0; i--) {
if (num[i + 1] < num[i]) {
//swap
temp = num[i + 1];
num[i + 1] = num[i];
num[i] = temp;
}
}
//print midde number
if(index % 2 == 0) { //even
middle = (num[index / 2 - 1] + num[index / 2]) / 2;
}
else { //odd
middle = num[index / 2];
}
cout << middle << endl;
}
}

11
2010-10-11/10176.cpp Normal file
View File

@ -0,0 +1,11 @@
/*
date:107/10/20
author:Chen Yi Jing
*/
#include <iostream>
using namespace std;
int main (){
}

223
2010-10-11/10415.cpp Normal file
View File

@ -0,0 +1,223 @@
/*
date:107/10/20
author:Chen Yi Jing
算手指按按鍵拿起來的次數,共十指
*/
#include <iostream>
#include <sstream>
using namespace std;
int main (){
int n = 0;
cin >> n;
string ss;
getline(cin, ss); //do nothing
//case by case
for (int i = 0; i < n; i++) {
string s;
int before[11] = {0};
int after[11] = {0};
int finger[11] = {0};
getline(cin, s);
// cin >> s;
if(s[0] == 1){
cout <<"qq";
}
for (int j = 0; j < s.length(); j++) {
//判斷指法
switch(s[j]) {
case 'c':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 1;
break;
case 'd':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 0;
break;
case 'e':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 0;
after[10] = 0;
break;
case 'f':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'g':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'a':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'b':
after[1] = 0;
after[2] = 1;
after[3] = 0;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'C':
after[1] = 0;
after[2] = 0;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'D':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 0;
break;
case 'E':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 0;
after[10] = 0;
break;
case 'F':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'G':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'A':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'B':
after[1] = 1;
after[2] = 1;
after[3] = 0;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
default:
break;
}
//判斷是否要加按下去的次數,還有將 before 更新
for (int k = 1; k < 11; k++) {
if (before[k] == 0 && after[k] == 1) {
finger[k]++;
before[k] = 1;
}
else if (before[k] == 1 && after[k] == 0) {
before[k] = 0;
}
}
}
for (int k = 1; k < 10; k++) {
cout << finger[k] << " ";
}
cout << finger[10];
cout << endl;
}
}

38
README.md Normal file
View File

@ -0,0 +1,38 @@
# Created by https://www.gitignore.io/api/c++
### C++ ###
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# End of https://www.gitignore.io/api/c++