zoukankan      html  css  js  c++  java
  • Bestcoder #80

    首先吐槽一下,ca爷出的这套题到处都是坑,bestcoder变成besthack,Ranting已经掉得不能看了

    A题:

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5665

    分析:这题题目写错,一wa,最后发现是求的非负数

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 const int maxn=100100;
    15 long long a[maxn];
    16 int main()
    17 {
    18     int t,n;
    19     cin>>t;
    20     while(t--)
    21     {
    22         cin>>n;
    23         for(int i=0;i<n;i++)
    24             cin>>a[i];
    25         int flag=0,flag1=0;
    26         for(int i=0;i<n;i++)
    27         {
    28             if(a[i]==1)
    29             {
    30                 flag=1;
    31             }else if(a[i]==0)
    32             {
    33                 flag1=1;
    34             }
    35         }
    36         if(flag&&flag1)  cout<<"YES"<<endl;
    37         else   cout<<"NO"<<endl;
    38     }
    39     return 0;
    40 }
    View Code

    B题:

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5666

    分析:因为p是质数,所以内部线段上不可能有点,直接皮克定理,取模3A

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<string>
     6 #include<vector>
     7 #include<algorithm>
     8 using namespace std;
     9 struct point{
    10     long long x,y;  
    11 }p[3],m[3];
    12 long long gcd(long long a,long  long b){
    13     long long c;
    14     while(b){
    15         c=a%b;
    16         a=b;
    17         b=c;
    18     }
    19     return a;
    20 }
    21 long long S(point p1,point p2,point p0){
    22     return abs((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x));  
    23 }
    24 int main(){
    25     long long sum,s,ans;
    26     int t;
    27     long  long h,q;
    28     cin>>t;
    29     while(t--){
    30         cin>>h>>q;
    31         p[0].x=0,p[0].y=0;
    32         p[1].x=h,p[1].y=0;
    33         p[2].x=0,p[2].y=h;
    34         m[0].x=abs(p[0].x-p[1].x);m[0].y=abs(p[0].y-p[1].y);
    35         m[1].x=abs(p[1].x-p[2].x);m[1].y=abs(p[1].y-p[2].y);
    36         m[2].x=abs(p[0].x-p[2].x);m[2].y=abs(p[0].y-p[2].y);
    37         sum=gcd(m[0].x,m[0].y)+gcd(m[1].x,m[1].y)+gcd(m[2].x,m[2].y);
    38         s=S(p[1],p[2],p[0]);
    39         ans=(s-sum+2)/2%q;
    40         cout<<ans<<endl;
    41     }
    42     return 0;
    43 }
    View Code

    然而事实证明了,这个题目会被hack,因为会爆long long,赛后java写了个大数类才过的,皮克定理最后推出公式是(q-1)*(q-2)/2

     1 import java.math.BigInteger;
     2 import java.util.Scanner;
     3 
     4 public class Main {
     5 
     6     @SuppressWarnings("resource")
     7     public static void main(String[] args) {
     8         Scanner cin=new Scanner(System.in);
     9         int t;
    10         t=cin.nextInt();
    11         for(int i=0;i<t;i++){
    12             BigInteger p,q,sum1,sum2;
    13             p=cin.nextBigInteger();
    14             q=cin.nextBigInteger();
    15             sum1=p.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(2));
    16             sum2=p.subtract(BigInteger.valueOf(2));
    17             System.out.println(sum1.multiply(sum2).mod(q));
    18         }
    19     }
    20 
    21 }
    Accept
  • 相关阅读:
    linux sed命令详解
    SQL注入基础知识
    DC-7
    DC-6
    DC-5
    DC-4
    DC-3
    DC-2
    pentestlabs
    任意文件读取和下载
  • 原文地址:https://www.cnblogs.com/wolf940509/p/5403685.html
Copyright © 2011-2022 走看看