本题为送分题。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <cmath>
using namespace std;
int main(){
// freopen("in.txt", "r", stdin);
double P, T, G1, G2, G3, GJ, ans;
while(~scanf("%lf %lf %lf %lf %lf %lf", &P, &T, &G1, &G2, &G3, &GJ)){
if(fabs(G1-G2) <= T) ans = (G1+G2)/2;
else if((fabs(G3-G1) <= T) && (fabs(G3-G2) > T)) ans = (G1+G3)/2;
else if((fabs(G3-G1) > T) && (fabs(G3-G2) <= T)) ans = (G2+G3)/2;
else if((fabs(G3-G1) <= T) && (fabs(G3-G2) <= T)) ans = max(max(G1, G2), G3);
else if((fabs(G3-G1) > T) && (fabs(G3-G2) > T)) ans = G3;
printf("%.1lf\n", ans);
}
return 0;
}
这个题也是送分题,注意数的范围是十位数,int不够用long long。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <cmath>
#include <climits>
using namespace std;
const int MAXN = 100005;
const int INF = INT_MAX;
string n;
int main(){
// freopen("in.txt", "r", stdin);
while(cin >> n){
if(n == "0") break;
long long ans = 0, sector = 1;
int num = n.size(), cur = 0;
for(int i = 0; i < num; i++){
sector *= 2;
}
while(num--){
ans += ((n[cur++] - '0') * (sector-1));
sector /= 2;
}
printf("%lld\n", ans);
}
return 0;
}