1044 旅游观光
题目描述:
有n个地方,编号为1->n,任意两个地方有公交车,从i到j的票价为(i+j)mod(n+1),而且这个票可以用无限次,你要把这些地方全部走一遍,问最小花费为多少。可以在任意地方开始和结束。
输入描述:
第一行一个数n
输出描述:
输出一行一个数表示答案
示例:
输入
10
输出
4
说明
1 -> 10 -> 2 -> 9 -> 3 -> 8 -> 4 -> 7 -> 5 -> 6,代价是4
备注:
对于100%的数据,有1 <= n <= 100000
分析:
因为都是取n+1的模,所以要使得所加得数据更靠近n+1。易知首尾相加两项为n+1,即为解题关键。
第一次:从1到n,(1+n)%(1+n)=0;
第二次:从n到2,(n+2)%(1+n)=1;
第三次:从2到n-1,(2+n-1)%(1+n)=0;
由此往复得到最小花费为(n-1)/2;
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout <<(n-1)/2<<endl;
return 0;
}
1047 得不到的爱情
题目描述:
Chranos是个数学天才。一天,有一个可爱的小女孩追求Chranos,他知道Chranos最喜欢当且仅当总质量为K克的时候的番茄炒蛋了。她希望通过美食俘获Chranos的胃,这样就一定可以和他在一起了吧!虽然小女孩有无限数量的食材,但是数学王国的番茄和蛋非常特殊,他们的质量分别为N克和M克。为了表现一颗完整的心、表达充足的爱意,所有的食材必须被用完。N和M都是正整数且互素,制作过程中既不会凭空增加质量,也不会凭空消失质量。
Chranos不希望小女孩打扰他学数学。他发现,并不是所有番茄炒蛋都是可以被制作出来的。他想找出最大的不可以被制作出的总质量K来拒绝小女孩,这样Chranos就可以永远和数学在一起了!
输入描述:
第一行为正整数N和M(2≤N,M≤50000).
输出描述:
输出最大的不可以被制作出的总质量k
示例:
输入
2 3
输出
1
分析:
题目意思其实就是求一不定方程ax+by=k,k的最大值。运用了塞瓦维斯特定理,即k=ab-a-b。
AC代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
#define int long long
signed main()
{
int N, M;
cin >> N >> M;
cout << N*M-M-N;
return 0;
}
注:应该用long long,否则会WA