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;
}