NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » skipper 的個人資料 » 顯示文章
 主題

顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。

主題 - skipper

頁: [1]
1
NPSC2014國中組決賽 / D 寧寧發糖果
« 於: 十二月 06, 2014, 03:08:40 pm »
/*
先用快篩法建立質數表再做!
http://www.csie.ntnu.edu.tw/~u91029/Prime.html
*/
代碼: [選擇]
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int S[77777];
const int MAX = 1000001;
bool prime[MAX];

void eratosthenes()
{
    for (int i=0; i<MAX; i++)  // 初始化
        prime[i] = true;
 
    prime[0] = false;   // 0 和 1 不是質數
    prime[1] = false;
 
    // 找下一個未被刪掉的數字
for (int i=2; i<MAX; i++){
if (prime[i]){
            // 刪掉質數i的倍數,從兩倍開始。保留原本質數。
            for (int j=i+i; j<MAX; j+=i)
                prime[j] = false;
}
}
}
int main(){
eratosthenes();
int T,n;
cin >>T;
while(T--){
cin >> n;
for (int i=0;i<n;i++){
cin >> S[i];
}
int largest = *max_element(S,S+n);
bool FOUND=false;
for (int j=2;j<=largest&&!FOUND;j++){
if(prime[j]){
int count=0;
for (int i=0;i<n&&!FOUND;i++){
if (S[i]%j==0) count++;
if (count==2) FOUND =true;
}
}
}
if (FOUND) cout <<"Yes"<<endl;
else cout << "No"<<endl;
}
return 0;
}

2
NPSC2014國中組決賽 / A 生日快樂喵
« 於: 十二月 06, 2014, 03:05:51 pm »
/*
1. 用窮舉法先列出 n 從 0~30 的解,看出規律,再求解
2. 小心死在多一個0 (n=9,18,...)
*/
代碼: [選擇]
#include <iostream>
#include <string>
using namespace std;
int main(){
int T,n;
cin >>T;
while(T--){
cin >> n;
if (n==0) {
cout << '0' <<endl;
}
else{
int n9 = n/9;
int leading = n%9;
if (leading!=0){
cout << leading;
}

// method1
string s= string(n9,'9');
cout << s;

// method2
//while(n9--){
//cout << "9" ;
//}
cout << endl;
}
}
return 0;
}

3
NPSC2014國中組初賽 / F 小可魚寫作業
« 於: 十一月 23, 2014, 07:51:00 pm »
代碼: [選擇]
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string>
#include<sstream>
#include<vector>
using namespace std;

int main(){
int numofcase;
cin>>numofcase;
for(int z=0;z<numofcase;z++){
int sizeofstring;
cin>>sizeofstring;
    string s;
string steve;
cin>>steve;
steve=steve+"a";
int ans=0;
int finalans=0;
    int breakpoint=-1;
for(int i=0;i<steve.length();i++){
if(steve[i]>='a'&&steve[i]<='z'){
steve[i]=' ';
ans+=(i-breakpoint)*(i-breakpoint-1)/2;

for(int j=breakpoint+1;j<i;j++){
   if(steve[j]=='0'){
     ans-=(i-1-j);
   }

}
finalans+=ans;
ans=0;
breakpoint=i;
}

}
cout<<finalans<<endl;

}
}

4
NPSC2014國中組初賽 / NPSC-2014-國中組E.等差數列
« 於: 十一月 23, 2014, 07:48:27 pm »
代碼: [選擇]
#include <iostream>
#include <algorithm>
using namespace std;
int Y[200];
int main(){
int T; cin >> T;
while(T--){
int N,max=0;
cin >> N;
for (int i=0;i<N;i++) cin >> Y[i];
bool same=true;
int d = Y[1]-Y[0];
for (int i=2;i<N;i++){
int d2 = Y[i]-Y[i-1];
if (d2!=d){
same=false;
break;
}
}

if (same){
max = N;
}
else{
for (int i=0;i<N;i++){
for (int j=i+1;j<N;j++){
float A,B;
A = (float)(Y[j]-Y[i])/j-i;
B = Y[i]-A*i;
//cout << i << ' ' << j <<' ' << A << ' ' <<B <<  endl;

int M=0;
for(int k=0;k<N;k++){
//cout << k << " " << Y[k] << " " << A*(k)+B << endl;
if (Y[k]==A*(k)+B)
M++;
}
if (M>max){
max = M;
if (max==N) break;
}
}
}
}


cout << N-max  << endl;
}
return 0;
}

5
NPSC2012國中組初賽 / D. B613星球的元素 (C++)
« 於: 十二月 01, 2012, 08:36:00 pm »
代碼: [選擇]
// accessing mapped values
#include <iostream>
#include <map>
#include <string>
using namespace std;

int main ()
{
map<string,int> Elements;
int M,N;
cin >> M >> N;
//建立元素表
for(int i = 0;i < M;i++){
string element;
int weight;
cin >> element >> weight;
Elements[element] = weight;
}

for(int i = 0;i < N;i++){
string composite;
int weight=0;
cin >> composite;
string e;
e=composite[0];
int number=0;
for (int j=1;j<composite.length();j++){
if (isdigit(composite[j])){
number = number*10 + (composite[j]-'0');
}
else if (islower(composite[j])){
e=e+composite[j];
}
else{
if (number==0) number=1;
weight += Elements[e] * number;
e= composite[j];
number=0;
}
}
if (number==0) number=1;
weight += Elements[e] * number;
cout << weight << endl;
}

  //system("pause");
  return 0;
}

6
NPSC2008國中組初賽 / [C++] A. 優惠方案
« 於: 十一月 17, 2012, 06:33:29 pm »
代碼: [選擇]
#include <iostream>
using namespace std;
int main(){
int cases,w,x,y,z;
cin >> cases;
for(int i = 0;i < cases;i++){
cin >> x >> y >> z;
w = (x-y)*(y-z)*(z-x);
if (w==0)
cout << "NO" << endl;
else
cout << "YES"<< endl;
}
return 0;
}

7
NPSC2008國中組初賽 / [C++] D. 沙之國
« 於: 十一月 17, 2012, 06:27:53 pm »
代碼: [選擇]
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main(void){
int cases,p,times;
cin >> cases;
for(int i = 0;i < cases;i++){
cin >> p;
times=0;
times += p/27;
p = p%27;
times += p/9;
p = p%9;
times += p/3;
times += p%3;
cout << times << endl;
}
return 0;
}

8
NPSC2008國中組初賽 / [C++] C. 電費系統
« 於: 十一月 17, 2012, 06:18:23 pm »
代碼: [選擇]
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(void){
int steps,current,next,delta,cost=0;
while(1) {
cin >> steps;
if (steps==0){
break;
}
else{
cost=0;
cin >> current;
for(int i=0;i<steps-1;i++){
cin >> next;
delta = next -current;
if (delta <0){
cost += delta*(-1)*10;
}
else{
cost += delta * 20;
}
current = next;
}
cout << cost << endl;
}
}
return 0;
}

9
NPSC2008國中組初賽 / [C++]B. 首領的名字
« 於: 十一月 17, 2012, 06:06:26 pm »
代碼: [選擇]
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool match(string s, string t){
bool front, end;
int w=0;
for (int i=0;i<s.length();i++){
if (s[i]=='#'){
w=i;
break;
}
}

front = true;
for (int i=0;i<w;i++){
if (s[i]==t[i]){
continue;
}
else {
front = false;
}
}
reverse (s.begin(), s.end());
reverse (t.begin(), t.end());

end = true;
for (int i=0;i<s.length()-w-1;i++){
if (s[i]==t[i]){
continue;
}
else {
end = false;
}
}
return front && end;
}
int main(void){
int cases,n;
string s,t;
cin >> cases;
for(int i = 0;i < cases;i++){
cout << "DATA SET #" << (i+1) <<":" <<endl;
cin >> s;
cin >> n;
for(int j=0;j < n;j++){
cin >> t;
if (match(s,t)){
cout << "POSSIBLE" << endl;
}
else{
cout << "IMPOSSIBLE" << endl;
}
}
}
return 0;
}

10
NPSC2009國中組初賽 / [C++] A. 樹上的松鼠
« 於: 十一月 11, 2012, 02:46:23 pm »
代碼: [選擇]
#include <iostream>
using namespace std;
int main(void){
int cases,i,n,x,y,h;
cin >> cases;
for(int i = 0;i < cases;i++){
cin >> n;
int max=0;
for(int j = 0;j < n;j++){
cin >> x >> y >> h;
if (h>max) max = h;
cin >> x >> y >> h;
if (h>max) max = h;
}
cout << max << endl;
}
//system("pause");
return 0;
}

頁: [1]