---
# System prepended metadata

title: TOI 10月份解題報告
tags: [資源]

---

# TOI 10月份解題報告
:::danger
<font color="#404040">題目</font>[傳送門](https://github.com/lmshlmcps4th/Bulletin-Board/releases/tag/toi21.10.1)
:::

## 目次
:::spoiler
> [TOC]
:::


### 李信緯
:::success
##### 第一題
```CPP=
#include <iostream>
using namespace std;
int main(){
	int a,s;
	cin>>a>>s;
	if(s%a==0) 
		cout<<s/a<<"\n";
	else
		cout<<s/a+1<<"\n";
	return 0;
}
```
解題想法:
>公式:a=Δv÷Δt => Δt×a=Δv   [百度百科_加速度](https://baike.baidu.hk/item/%E5%8A%A0%E9%80%9F%E5%BA%A6/3764)
>最小單位為s(秒),不足1s需無條件進位
##### 第二題
```CPP=
#include <iostream>
using namespace std;
int main(){
	long long a,x[10001]={1},n=0;
	cin>>a;
	for(int i=1;i<=a;i++){
		cin>>x[i];
		if(x[i-1]<x[i])
			n=n+(x[i]-x[i-1])*3;
		else
			n=n+(x[i-1]-x[i])*2;
	}
	cout<<n<<"\n"; 
	return 0;
}
```
解題想法:
>社長想吃咖哩豬排
##### 第三題
```CPP=
#include <iostream>
using namespace std;
int main(){
	int n,m,d;
	bool a=false;
	cin>>n>>m>>d;
	while(d>=0){
		if(d%n==0||d%m==0){
			a=true;     //更改bool
			break;		//迴圈停止	
		}
		else
			d=d-(n+m);
	}
	if(a)
		cout<<"YES\n";
	else
		cout<<"NO\n";
	return 0;
}
```
解題想法:
>D=(N+M)的倍數+(N或M)的倍數
>利用a偵測D是否成立
>
>第7行需d>=0,因有"D=(N+M)的倍數"的可能性
>(但本次競賽未出現"D=(N+M)的倍數"的測資)
>[推! 不錯解題方法](#%E7%AC%AC%E4%B8%89%E9%A1%8C4)
:::

### 陳育琳
:::success
##### 第一題
```CPP=
#include <iostream>
using namespace std;
int main(){
	int a,v;
	while(cin>>a>>v){
		if(v%a==0){
			cout<<v/a<<endl;
		}else{
			cout<<(v/a)+1<<endl;
		}
	}
	return 0;
}
```
解題想法:
>只是除法而已
##### 第二題
```CPP=
#include <iostream>
using namespace std;
int main(){
    int a;
	while(cin>>a){
		int b[a+1],sum=0;
		b[0]=1;
		for(int i=1;i<=a;i++){
			cin>>b[i];
		}
		for(int i=1;i<=a;i++){
			if(b[i]-b[i-1]>0){
				sum=sum+(b[i]-b[i-1])*3;
			}else{
				sum=sum+(b[i-1]-b[i])*2;
			}
		}
		cout<<sum<<endl;
	}
    return 0;

}
```
```CPP=
#include <iostream>
using namespace std;
int main(){
	int n;
	while(cin>>n){
		int sum=0,start=1,ed;
		for(int i=1;i<=n;i++){
			cin>>ed;
			if(ed>start){
				sum=sum+(ed-start)*3;
			}else{
				sum=sum+(start-ed)*2;
			}
			start=ed;
		}
		cout<<sum;
	}
}
```
解題想法:
>上面是用陣列的寫法 下面是不用的(有夠廢話
>反正就是用後項減前項 判斷正負 再加起來
##### 第三題
```CPP=
#include <iostream>
using namespace std;
int main(){
	int a,b,c,x,tmp;
	while(cin>>a>>b>>c){
		x=c/a;
    int flag=0;
		for(int i=x;i>=0;i--){
      flag=0;
		   int sum=0,j=0;
			while(flag==0){
			   sum=(i*a)+(j*b);
			   if(sum>c){
			   	break;
			   }else if(sum==c){
			   	flag=1;
			   }else{
           j++;
         }
			}
      if(flag==1){
        cout<<"YES"<<endl;
        break;
      }
		}
    if(flag==0){
      cout<<"NO"<<endl;
    }
	}
}
```
解題想法:
>解的最爛的一題 不懂自己為審麼要把他變得那麼複雜
>反正就是用除法去算出前面的那個系數最高多少 然後用j去列出後項的系數 加起來超過就結束 前項系數-1 [懂布林值得看社長的](#%E7%AC%AC%E4%B8%89%E9%A1%8C) 我很爛
:::

### 李偉漢
:::success
##### 第一題
```CPP=
#include <iostream> 
using namespace std;  
int main(){
	int b,a;
	cin >> b >> a;
	if(a%b==0){
		cout << a/b; 
	}else{
		cout << a/b+1;
        }
        return 0;
}
```
解題想法:
>同電神之想法

:::

### 黃渝婷
:::success
##### 第一題
```CPP=
#include<iostream>
using namespace std;
int main(){
	int a; 	//加速度
	int speed;	//目標速度
	cin>>a>>speed;
	if(speed%a==0){	//如果speed可以被a整除
		cout<<speed/a<<endl;
	}
	else{ //如果speed不被a整除就加1
		cout<<speed/a+1<<endl;
	}
	return 0;
}
```
>
##### 第二題
```CPP=
#include<iostream>
using namespace std;
int main(){
	int a,i;
	int b;	//樓層
	int c;	//上個樓層
	int total;	//耗電量
	cin>>a;		//電梯次數
	for(i=1;i<=a;i=i+1) //i是循環次數
		{
			cin>>b;
			if(i==1)   //移動第一次
				{
					total=(b-1)*3;
					c=b;
					continue;
				}
			if (b>c){	//電梯上升

				total=total+(b-c)*3;
			}
			else{	//電梯下降
			total=total+(c-b)*2;
			}
			c=b;
		}
			cout<<total;
			return 0;
}
```
##### 第三題
```CPP=
#include<iostream>
using namespace std;
int main(){
	int jump1; 	//固定跳躍的步數1
	int jump2;	//固定跳躍的步數2
	int total;	//目的地的長度
	cin>>jump1>>jump2>>total;	//輸入一組數字
	for(int i=0;;i++)
	{
		// cout<<total<<"\n";
		if(total%jump2==0||total%jump1==0){	
        //如果total能被jump1或jump2整除
			cout<<"YES"<<"\n";
			break;
		}
		else{						
			total=total-jump2-jump1;		
            //total減jump1和jump2
		}	
		if(total<0){	//如果total變成負數
			cout<<"NO"<<"\n";
			break;
		}
	}
	return 0;				
}	
```
>
:::

### 陳謙慧
:::success
##### 第一題
```CPP=
#include <iostream>     
using namespace std; 
int main() { 
    long int A,S;
    cin>>A>>S;{
	    if(S%A==0){
	        cout<<S/A<<endl;
	    }
	    else{
	        cout<<S/A+1<<endl;
	    }
    }
    return 0; 
}
```
>
:::











### 黃長智
:::success
```
社外人士
```
##### 第一題
```CPP=
#include<iostream>
using namespace std;

int main(){
	int a,v,t=0;
	cin>>a>>v;
	while(v>0){
		v=v-a;
		t++;
	}
	cout<<t;
}
```

##### 第二題
```CPP=
#include<iostream>
using namespace std;

int main(){
	int n,e=0,save=1;
	cin>>n;
	int t[n];
	for(int a=0;a<n;a++){
		cin>>t[a];
	}
	for(int a=0;a<n;a++){
		if(save>t[a]){
			e=e+(save-t[a])*2;
			save=t[a];
		}
		else{
			e=e+(t[a]-save)*3;
			save=t[a];
		}
	}
	cout<<e;
}
```

##### 第三題
```CPP=
#include<iostream>
using namespace std;

int main(){
	int N,M,D;
	cin>>N>>M>>D;
	while(D>0){
		if(D%M==0){
			cout<<"YES";
			return 0; //結束程式
		}
		D=D-N;
	}
	cout<<"NO";
}
```

###### tags: `資源`