#291 div.2

时间:2023-03-09 10:04:17
#291 div.2

A.水题 数字翻转,将每一位大于等于5的数字t翻转成9-t,注意不要有前导0,且翻转后数字的位数不变(即9999->9000...刚开始以为应该翻转成0了= =)

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
char x[];
cin >> x;
int len = strlen(x);
for(int i = ; i < len; i++)
if(x[i] >= '') x[i] = '' - x[i] + '';
if(x[] == '') x[] = '';
cout << x << endl;
return ;
}
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
char x[];
cin >> x;
int len = strlen(x);
for(int i = ; i < len; i++)
if(x[i] >= '') x[i] = '' - x[i] + '';
if(x[] == '') x[] = '';
cout << x << endl;
return ;
}

B.水题 斜率,每输入一个坐标(xi,yi)求出该点与标准点连线的斜率并记入数组k[]中,排序(sort),去重(unique);

NOTE:斜率注意的基本问题---斜率为无穷大与0时的特判;

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = ;
int main()
{
int n, cnt1 = , cnt2 = ;
double x0, y0, x, y;
double k[maxn];
scanf("%d%lf%lf", &n, &x0, &y0);
for(int i = ; i < n; i++)
{
scanf("%lf%lf", &x, &y);
if(x-x0 == ) {cnt1++; k[i] = ; continue;}
if(y-y0 == ) {cnt2++; k[i] = ; continue;}
k[i] = (y-y0)/(x-x0);
}
sort(k, k+n);
int ans = unique(k, k+n) - k;
if(cnt1 && cnt2) ans++;
cout << ans << endl;
return ;
}