A:沒什麼好說的,題意沒看清楚,只能輸出0,1,結果根本沒理解,被HACK了,水題掉分更歡快
WRONG_ANSWER
Checker:
wrong answer 1st numbers differ - expected: '1', found: '4'
Input:
8 1 8
11110000
Output:
4
Answer:
1
Time:
0
Memory:
0
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN = 1e5+10;
char map[MAXN];
int main()
{
int n,a,b,st,ed;
while( ~scanf("%d%d%d",&n,&a,&b) )
{
scanf("%s",&map);
for(int i=0; i<n; i++ )
{
if( i+1 == a ){
st = map[i]-48;
}
if( i+1 == b ){
ed = map[i]-48;
}
}
if( st == ed ){
printf("0\n");
}else{
int flag = a-1;
while( map[flag]-48 != ed )flag++;
int ans = abs( (a-1) - flag);
printf("%d\n",ans);
}
}
return 0;
}
B 一個二分。結果一不小心把left和right定義成了int,連錯兩次,掉分歡快。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int dig( long long x )
{
int d_ans = 0;
while( x != 1 )
{
x = x/2;
d_ans++;
}
return d_ans;
}
int main()
{
long long k;
int n;
while( ~scanf("%d%lld",&n,&k) )
{
if( k%2 == 1 ){
printf("1\n");
continue;
}
int bit = dig(k);
long long right,left,mid;
int flag=0;
right = pow(2,bit+1);
left = pow(2,bit);
if( left == k ){
printf("%d\n",bit+1);
continue;
}
if( right == k ){
printf("%d\n",bit+2);
continue;
}
while( right >= left )
{
mid = ( right + left ) >> 1;
if( mid == k )
{
break;
}else if( mid < k ){
left = mid;
flag++;
}else{
right = mid;
flag++;
}
}
printf("%d\n",bit-flag);
}
return 0;
}
C 數學題 2/n = 1/n + 1/(n+1) + 1/n*(n+1);其實要是沒有案例2,不知道要有多少人想不到。本來秒出了,結果沒有考慮1的時候的情況,結果一直沒有過,連着D的時間也花掉了不少,繼續掉分。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int N;
double n,x,y,z;
while( ~scanf("%d",&N) )
{
if( N == 1 )
{
printf("-1\n");
continue;
}
else{
printf("%d %d %d\n",N,N+1,N*(N+1) );
}
}
return 0;
}
D 寫了一半就END了,回頭補上。