2019-08-10 计算客模拟赛

2019-08-10  本文已影响0人  saploser
image.png
image.png

190分,第一题0分了,没查出来问题
第一题

image.png
image.png
#include<iostream>
#include<cstdio>
#define NR 1000000
using namespace std ;
int x[NR + 10] ;
int y[NR + 10] ;
long long s[NR + 10] ;
int main()
{
    int n ;
    scanf("%d" , &n) ;
    for ( int i = 1 ; i <= n ; i++)
        scanf("%d%d" , x + i , y + i) ;
    
    for ( int i = 1 ; i <= n ; i++)
        s[i] = x[i] * x[i] + y[i] * y[i] ;
        
    int max = 0 , num = 0;  
    for ( int i = 1 ; i <= n ; i++)
    {
        if ( s[i] > max)
        {
            max = s[i] ;
            num = i ;
        }
    }
    
    printf("%d\n" , num) ;
    return 0 ;
}

[第二题]https://nanti.jisuanke.com/t/40788
过了

image.png
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std ;
bool isprime(int x) 
{
    if ( x == 1) return false ;
    if ( x == 2 ) return true ;
    if ( x % 2 == 0) return false ;
    for ( int i = 3 ; i <= sqrt(x) ; i += 2)
        if ( x % i == 0) return false ;
    return true ;
}
int weishu(int x)
{
    int sum = 0 ;
    while(x != 0)
    {
        x /= 10 ;
        sum++ ;
    }
    return sum ;
}
bool ishuiwen(int x)
{
    int a[6] ;
    int s = 0 ;
    while ( x != 0 ) 
    {
        s++ ;
        a[s] = x % 10 ;
        x /= 10 ; 
    }
    if (s == 5)
    {
        if ((a[1] == a[5]) && (a[2] == a[4]) )
            return true ;
        return false ;
    }
    if (s == 3)
    {
        if ( a[1] == a[3]) return true ;
        return false ;
    }
    if (s == 1)
    {
        return true ;
    }
}
int main()
{
    int r , l , ans = 0 ;
    scanf("%d%d" , &l , &r) ;
    for ( int i = l ; i <= r ; i++)
    {
        if ( i == 11) ans++ ;
        if ( (weishu(i) % 2 ) == 0) continue ;
        if ( !isprime(i)) continue ;
        if ( ishuiwen(i))
        {
            ans++ ;
        }
    }
    printf("%d\n" , ans) ;
    return 0 ;

}

第三题 有一个数据测试点错误,如何发现?

#include<iostream>
#include<cstdio>
using namespace std ;
int edge[1005][1005] ;
bool flag[1005] ;
int min_ = 1e7 ;
void addedge(int x , int y , int z)
{
    edge[x][y] = z ;
    return ;
}
void dfs(int now , int mubiao , int tired , int poi)
{
    if ( tired >= min_) return ;
    if ( now == mubiao )
    {
        if ( tired < min_) min_ = tired ;
        return ;
    }
    poi++ ;
    flag[now] = true ;
    for ( int  i = 2 ; i <= mubiao ; i++)
    {
        if ( edge[now][i] == 0 ) continue ;
        if ( flag[i] == true ) continue ;
        int tired_new = tired + poi * edge[now][i] ;
        dfs(i , mubiao , tired_new , poi) ;
    }
    flag[now] = false ;
    return ;
}
int main()
{
    int n , m ;
    scanf("%d%d" , &n , &m) ;
    for ( int i = 1 ; i <= m ; i++)
    {
        int x , y , z ;
        scanf("%d%d%d" , &x , &y , &z) ;
        addedge(x , y , z) ;
    }
    dfs(1 , n , 0 , 0) ;
    printf("%d\n" , min_) ;
    return 0 ;
}
上一篇 下一篇

猜你喜欢

热点阅读