做了1001 和 1005
以为最后能把1002给A掉的
不知道为啥WA了 但是贪心的思路没错。。
题目大意:给出 f(x) 和 g(x) 的函数各个多项式的系数,求 时,f(x)/g(x) 的值(输出用分数表示)
思路:判断两个多项式的最高位,如果两者系数都为0,则判断下一位;
如果其中有一个系数为0,则趋向于正无穷 或者 趋向于0 (判断0在f(x)还是g(x)上
如果两个系数都不为0,就先算两者的最大公因数 = gcd(x1,x2) ,然后得到 ( f(x)/gcd ) / ( g(x)/gcd )
#include
using namespace std;
int a[1005], b[1005];
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int main()
{
int t;
scanf("%d", &t);
while (t--) {
int n;
int numa = -1, numb = -1;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
for (int i = n - 1; i >= 0; i--) {
if (a[i] > b[i]) {
if (b[i] == 0) {
numa = 1;
numb = 0;
} else {
int g = gcd(a[i], b[i]);
numa = a[i] / g;
numb = b[i] / g;
}
break;
} else if (a[i] < b[i]) {
if (a[i] == 0) {
numa = 0;
numb = 1;
} else {
int g = gcd(a[i], b[i]);
numa = a[i] / g;
numb = b[i] / g;
}
break;
} else {
continue;
}
}
printf("%d/%d\n", numa, numb);
}
return 0;
}
中间注释掉的是打表的过程emm
#include
using namespace std;
int a[1005], b[1005];
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
long long n;
int main()
{
int t, sum;
long long ans = 0, n;
scanf("%d", &t);
a[1] = 1;
// for (int i=2;i<1000;i++)
// {
// sum = 0;
// for (int j=1;j<=i-1;j++)
// sum+=(a[j]*(j)%i);
// a[i] = sum%i;
// }
// for (int i=1;i<100;i++)
// printf("%d * %d\n",i,a[i]);
while (t--) {
scanf("%I64d", &n);
if (n == 1 || n == 2) {
ans = 1;
} else {
long long num = (n - 3) % 6;
long long sum = (n - 3 - num) / 6;
if (num == 0 || num == 2) {
ans = sum;
} else if (num == 1) {
ans = sum * 6 + 3;
} else if (num == 3 ) {
ans = sum * 3 + 3;
} else if (num == 4) {
ans = sum * 4 + 5;
} else if (num == 5) {
ans = sum * 3 + 4;
}
}
printf("%I64d\n", ans);
}
return 0;
}
快到比赛结束的时候 测评鸡卡得不行
以为自己思路很完美 但是还是少考虑了一个点emm
题目大意:一次通过n个区间 [ ai,bi ],到达区间的顶点也算到达,初始位置可以由你确定,一次可以走一格或者两个,最少需要走几次?
思路:从最开始寻找两个区间的交集,因为在交集内,可以任取一个位置,如果区间相交,更新区间为相交区间,再与下一个区间比较;如果区间不相交,比较两个区间的位置,得到最短的路程。
因为可以走一格或者两格,如果路程是偶数,那么就直接走到了;如果是奇数,最后一步可以是一格也可以是两格,这会影响下一步的步数,所以更新区间时把区间+1。
参考:https://blog.csdn.net/weixin_43331783/article/details/99703296
比赛的时候没有考虑到最后一步一格和两格的区别 导致WA到比赛结束……TAT
代码:
#include
using namespace std;
struct node
{
int a, b;
} x[1005];
bool jiao(node m, node n)
{
if (m.a > n.b && m.b > n.b)
{
return false;
}
else if (m.a