一共有N天,起始距离为B,现在为A,B >= A,对于距离之和,一共有两种极端情况
最大:B B B ..... B B A 距离之和为 max =(N-1)B + A
最小:B A A ..... A A A 距离之和为 min =(N-1)A + B
可以发现其实对于任一距离d,min<=d<=max,都可以通过设置每一天的距离来实现
例如 对于 d = min + 3
设置N天的距离为:B A+2 A+1 A A ...... A A A
或者 d = max - 5
设置N天的距离为:B B B ...... B-2 B-3 A
所以距离共有 max-min+1种
ans = (N - 2)*(B - A) + 1
代码
include
using namespace std;
int main()
{
long long int N,A,B;
cin >> N >> A >> B;
cout << (N - 2)*(B - A) + 1 << endl;
}
s = input().split(‘ ‘)
N = int(s[0]) - 2
A = int(s[1])
B = int(s[2])
number = B - A +1
if N == 0:
print(1)
elif N == 1:
print(number)
else:
p_num = 0
print(number*N-N+1)
一共有N天,起始距离为B,现在为A,B >= A,对于距离之和,一共有两种极端情况
最大:B B B ..... B B A 距离之和为 max =(N-1)B + A
最小:B A A ..... A A A 距离之和为 min =(N-1)A + B
可以发现其实对于任一距离d,min<=d<=max,都可以通过设置每一天的距离来实现
例如 对于 d = min + 3
设置N天的距离为:B A+2 A+1 A A ...... A A A
或者 d = max - 5
设置N天的距离为:B B B ...... B-2 B-3 A
所以距离共有 max-min+1种
ans = (N - 2)*(B - A) + 1
代码
include
using namespace std;
int main()
{
long long int N,A,B;
cin >> N >> A >> B;
cout << (N - 2)*(B - A) + 1 << endl;
}
s = input().split(‘ ‘)
N = int(s[0]) - 2
A = int(s[1])
B = int(s[2])
number = B - A +1
if N == 0:
print(1)
elif N == 1:
print(number)
else:
p_num = 0
print(number*N-N+1)