1. 硬幣
牛家村的貨幣是一種很神奇的連續貨幣。
他們貨幣的最大面額是n,並且一共有面額爲1,面額爲2.....面額爲n,n種面額的貨幣。
牛牛每次購買商品都會帶上所有面額的貨幣,支付時會選擇給出硬幣數量最小的方案。
現在告訴你牛牛將要購買的商品的價格,你能算出牛牛支付的硬幣數量嗎? (假設牛牛每種面額的貨幣都擁有無限個。)
輸入格式
共一行,包含兩個整數n和m,分別表示貨幣的最大面額以及商品的價格。
輸出格式
一個整數表示牛牛支付的硬幣數量。
數據範圍
1≤n≤1051≤n≤105,
1≤m≤1091≤m≤109
輸入樣例1:
6 7
輸出樣例1:
2
輸入樣例2:
4 10
輸出樣例2:
3
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
cout<<(m+n-1)/n<<endl;
}
2. 奇妙的數列
妞妞最近迷上了王者榮耀。
小Q得到了一個奇妙的數列,這個數列有無限多項,數列中的第 i 個數字爲i∗(−1)ii∗(−1)i,比如數列的前幾項爲-1,2,-3,4,-5…
小Q興奮把這個數列拿去給妞妞看,並希望藉此邀請妞妞吃飯。
妞妞想了想,對小Q說:“對於這個數列,我每次詢問你一個區間,你在1秒內把這個區間裏的數字的和告訴我,如果你答得上來我就跟你一起去吃飯。”
由於妞妞最近沉迷王者榮耀,已經很久都沒理過小Q了,所以小Q不想失去這次珍貴的機會,你能幫幫他嗎?
輸入格式
第一行,一個整數 q,表示妞妞的詢問次數。
接下來 q 行,每行兩個整數 l 和 r,表示妞妞詢問的區間的左端點和右端點。
輸出格式
共 q 行,每行一個整數,表示妞妞詢問的區間和。
數據範圍
1≤q≤1051≤q≤105,
1≤l≤r≤1091≤l≤r≤109
輸入樣例1:
4
2 4
2 2
3 3
1 5
輸出樣例1:
3
2
-3
-3
輸入樣例2:
1
1 1000000000
輸出樣例2:
500000000
// -1,2,-3,4,-5
// (-1,2)-3,4,-5 ——l奇:(奇+偶)=1
// -1(2,-3)4,-5 ——r奇:(偶+奇)=-1
// l...r
// int k=(r-l+1)/2;
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int l,r;
cin>>l>>r;
int k=(r-l+1)/2;
int res=0;
//如果(r-l+1)爲偶數,正好偶數對個k
//l爲數-1+2
if(l%2==1) res=k;
else res=-k;
//如果(r-l+1)爲奇數,餘r
if((r-l+1)%2==1)
{
if(r%2==0) res+=r;
else res-=r;
}
cout<<res<<endl;
}
return 0;
}