北邮oj1-5
1.A+B
2.A+B
3.single number(位运算法)
https://blog.****.net/sacainiao/article/details/50785964
#include<stdio.h>
int main() {
int n = 0, i = 0;
unsigned long long one, two, three, num;
while (scanf("%d",&n)!=EOF) {
one = two = three = 0;
for (i = 0; i < n; i++) {
scanf("%lld",&num);
three = two#
two = two | one#
one = one | num;
one = one&(~three);
two = two&(~three);
}
printf("%lld\n", one);
}
return 0;
}
4.
Three Points On A Line
#include <iostream>
#include <math.h>
using namespace std;
typedef struct Point{
float x;
float y;
}Point;
bool isOnALine(Point a, Point b, Point c);
float slope(Point a, Point b);
int main() {
int caseCount;
bool onaline;
cin>>caseCount;
for(int i = 0; i < caseCount; i++) {
int pointCount;
cin>>pointCount;
Point ps[pointCount];
for(int j = 0; j < pointCount; j++) {
cin >> ps[j].x >> ps[j].y;
}
onaline = false;
if(pointCount >= 3) {
Point a,b,c;
for(int k = 0; k < pointCount && !onaline; k++) {
a = ps[k];
for(int l = k + 1; l < pointCount && !onaline; l++) {
b = ps[l];
for(int g = l + 1; g < pointCount && !onaline; g++) {
c = ps[g];
if(isOnALine(a,b,c)) {
onaline = true;
break;
}
}
}
}
}
if(onaline) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
return 0;
}
bool isOnALine(Point a, Point b, Point c) {
return (fabs(a.x * c.y + b.x * a.y + b.y * c.x - b.x * c.y - a.y * c.x - b.y * a.x) <= 1e-6);
}
float slope(Point a, Point b) {
return (a.y - b.y) / (a.x - b.x);
}
5.
日期(比照王道机师指南九度1096改)
计算今天是今年的第几天
#include<stdio.h>
#define ISYEAP(x) x % 100 != 0 && x % 4 == 0 || x % 400 == 0 ? 1 : 0
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
struct Date
{
int Day;
int Month;
int Year;
void nextDay() {
Day++;
if(Day>dayOfMonth[Month][ISYEAP(Year) ]) {Day= 1; Month++;if(Month> 12) {Month= 1; Year++; } }
}
};
int buf[5001][13][32];
int main() {
Date tmp;
int cnt= 0;
tmp.Day= 1;
tmp.Month = 1;
tmp.Year= 0;
while(tmp.Year!= 2101) {
buf[tmp.Year][tmp.Month][tmp.Day] =cnt;
tmp.nextDay();
cnt++;
}
int d,m,y;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d:%d:%d",&y,&m,&d);
printf("%d\n",buf[y][m][d] -buf[y][1][1] + 1);
}
return 0;
}