Codeforce #743【深夜掉分之旅】

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了,回頭補上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章