---
# System prepended metadata

title: W6
tags: [for, bool, sort, "if\_", while, abs, array]

---

> [TOC]
> 
> [time=Sun, Dec 3, 2023 8:43 PM]
# a072: uva10849. Move the Bishop **
http://140.113.72.36:207/ShowProblem?problemid=a072
>行列差值為0 =>不用走 ,行列差值相同 => 走1 ,
行列差值奇偶相同 => 走2 ,行列奇偶不同 => no move
```cpp=
//a072: uva10849. Move the Bishop
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int c,t,n,r1,c1,r2,c2;
	cin>>c;
	while(cin>>t>>n)
	{
		while(t--)
		{
			cin>>r1>>c1>>r2>>c2;
			if(r1==r2&&c1==c2)//不用走 ***
			{
				cout<<"0"<<endl;
			}
			else if(abs(r1-r2)==abs(c1-c2))//行列差相同 
			{
				cout<<"1"<<endl;
			}
			else if(abs(r1-r2)!=abs(c1-c2))//行列差不同 
			{
				if(abs(r1-r2)%2==abs(c1-c2)%2)//奇偶同 
				{
					cout<<"2"<<endl;
				}
				else if(abs(r1-r2)%2!=abs(c1-c2)%2)//奇偶不同 
				{
					cout<<"no move"<<endl;
				}
			}
		}
	}
	return 0;
}
```
# a082: uva.10038 Jolly Jumpers *****
> http://140.113.72.36:207/ShowProblem?problemid=a082
>計算差值 並將<**difference[j]** **(預設是0)**>中的1~n-1格設成1
>預設jolly ,如果在這範圍中有任何差值不存在 => not jolly
```cpp=
//a082: uva.10038 Jolly Jumpers
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n;
	int number[3000];
	
	while(cin>>n)
	{
		bool jolly =true;//預設jolly ***
		for(int i=0;i<n;i++)//輸入array 
		{
			cin>>number[i];
		}
		int difference[3000]={0};//紀錄差值是否存在 ***
		int diff;
		
		for(int j=0;j<n;j++)
		{
			diff=abs(number[j]-number[j+1]);//計算差值 ***
			difference[diff]=1;//紀錄差值存在*** 
		}
		
		for(int k=1;k<n;k++)//檢查差值1~n-1是否都存在*****
		{
			if(difference[k]==0)//一個差值不存在 => not jolly
			{
				jolly=false;
				break;
			}
		}
		if(jolly==true)
		{
			cout<<"Jolly"<<endl;
		}
		else if(jolly==false)
		{
			cout<<"Not jolly"<<endl;
		}
	}
	
	return 0;
}
```
# a086: uva.11059 Maximum Product*****
> http://140.113.72.36:207/ShowProblem?problemid=a086
> **用long long int** 
> 開始位置i從0到n-1
> 結束位置j從i到n-1
> 每個(i,j)的結果判斷<**product(預設是1)**>是否成為<**maxproduct(預設是0)**>
```cpp=
//a086: uva.11059 Maximum Product
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n;
	int number[18];
	int casenumber =1;//現在case數 ***
	while(cin>>n)
	{
		for(int i=0;i<n;i++)//輸入array 
		{
			cin>>number[i];
		}
		long long int maxproduct=0;//long long 重置*****
		for(int i=0;i<n;i++)//從i=0開始 ...=>從i=n-1開始 ***
		{
			long long int product=1;//long long 重置*****
			for(int j=i;j<n;j++)//乘到i ...=>乘到n-1 ***
			{
				product*=number[j];	
				maxproduct=max(maxproduct,product);//取max*****
			}
			
		}
		cout<<"Case #"<<casenumber++<<": The maximum product is "<<maxproduct<<"."<<endl;
		cout<<endl;
	}
	return 0;
}
```
# a088: uva.11204 Musical Instruments*****
> http://140.113.72.36:207/ShowProblem?problemid=a088
> 學生i從0~m, 樂器j從0~n,逐一輸入 
遇到1時在相對應的<**array[j]** **(預設都是0)**>上+1
> <**ans(預設是1)**>要乘上**每個樂器重複的人數**
```cpp=
//a088: uva.11204 Musical Instruments
#include <iostream>
using namespace std;
int main()
{
	int t,n,m,rank,ans;
	cin>>t;
	while(cin>>n>>m)
	{
		int total[32]={0};//要重置成0 *****
		ans=1;//重置成1 *****
		for(int i=0;i<m;i++)//m位學生 
		{
			for(int j=0;j<n;j++)//n個樂器 
			{
				cin>>rank;//輸入排名 
					
				if(rank==1)
				{
					total[j]++;//紀錄+1		
				}	
			}
			
		}
		
		for(int j=0;j<n;j++)//檢查重複紀錄 
		{
			if(total[j]>0)
			{
				ans*=total[j];
			}
		}	
		cout<<ans<<endl;
		
		
	}
	return 0;
}
```
# a093: uva.12650 Dangerous Dive*****
> http://140.113.72.36:207/ShowProblem?problemid=a093
>回來的r個人依照輸入在相對應的<**array[i]** **(預設是0)**>位置上設成1
>檢查j從1~n , array[j]==0時 輸出j值
```cpp=
//a093: uva.12650 Dangerous Dive
#include <iostream>
using namespace std;
int main()
{
	int n,r,back;
	while(cin>>n>>r)
	{
		int s[105]={0};//預設是0*****
		
		for(int i=1;i<=r;i++)//輸入回來的 
		{
			cin>>back;
			s[back]=1;//存活紀錄為1 
		}
		if(n==r)//全部存活 
		{
			cout<<"*"<<endl;
		}
		else //n!=r 不要用break*****
		{
			for(int j=1;j<=n;j++)
			{
				if(s[j]==0)//輸出沒回來的 
				{
					cout<<j<<" ";
				}
			}
			cout<<endl;	
		}
		
		
	}
	return 0;
}
```
# a101: Parking***
> http://140.113.72.36:207/ShowProblem?problemid=a101
> 用<**algorithm**>由小到大排序 然後輸出2*(x[n-1]-x[0])
```cpp=
//a101: Parking
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int t,n;
	int x[20];
	cin>>t;
	while(cin>>n)
	{
		for(int i=0;i<n;i++)
		{
			cin>>x[i];
		}
		sort(x,x+n);//小到大排序 ***
		cout<<(x[n-1]-x[0])*2<<endl;//最後(n-1)減第一(0)***
	}
	return 0;
}
```