zoukankan      html  css  js  c++  java
  • 湘潭校赛 Bob's Problem

    Bob's Problem

    Accepted : 18   Submit : 115
    Time Limit : 1000 MS   Memory Limit : 65536 KB 

    题目描述

    Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解?

    输入

    第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109)

    输出

    每行输出一个样例的结果,如果存在,输出“Yes”,否则输出“No”。(引号不用输出)

    样例输入

    2
    28
    27
    
    

    样例输出

    Yes
    No
    
    

    哈希

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<algorithm>
     6 using namespace std;
     7 const int INF =  100007;
     8 int a[1003];
     9 
    10 struct node
    11 {
    12     int num;
    13     struct node *next;
    14 };
    15 struct node f[INF];
    16 
    17 void Insert(int x)
    18 {
    19     struct node *p,*q;
    20     int k;
    21     k=x%INF;
    22     p=&f[k];
    23     while( p!=NULL && p->num!=x)
    24     {
    25         p=p->next;
    26     }
    27     if( p==NULL )
    28     {
    29         q=(struct node*)malloc(sizeof(struct node));
    30         q->next=f[k].next;
    31         q->num=x;
    32         f[k].next=q;
    33     }
    34 }
    35 bool found(int x)
    36 {
    37     int k;
    38     struct node *p;
    39     k=x%INF;
    40     p=&f[k];
    41     while( p!=NULL && p->num!=x)
    42     {
    43         p=p->next;
    44     }
    45     if( p==NULL)
    46     return false;
    47     if( p->num==x)
    48         return true;
    49 }
    50 void prepare()
    51 {
    52     int i,j;
    53     for(i=1;i<=1000;i++)
    54         a[i]=i*i*i;
    55 
    56     for(i=0;i<INF;i++)
    57     {
    58         f[i].num=0;
    59         f[i].next=NULL;
    60     }
    61     for(i=1;i<=1000;i++)
    62         for(j=i;j<=1000;j++)
    63         {
    64             Insert(a[i]+a[j]);
    65         }
    66 }
    67 int main()
    68 {
    69     int n,i,x;
    70     prepare();
    71     while(scanf("%d",&n)>0)
    72     {
    73         for(i=1;i<=n;i++)
    74         {
    75             scanf("%d",&x);
    76             if( found(x)==true )
    77                 printf("Yes
    ");
    78             else printf("No
    ");
    79         }
    80     }
    81     return 0;
    82 }

    set

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<set>
     6 #include<algorithm>
     7 using namespace std;
     8 
     9 int a[1001];
    10 set<int> Q;
    11 void prepare()
    12 {
    13     int i,j;
    14     for(i=1;i<=1000;i++)
    15         a[i]=i*i*i;
    16     Q.clear();
    17     for(i=1;i<=1000;i++)
    18         for(j=i;j<=1000;j++)
    19             Q.insert(a[i]+a[j]);
    20 }
    21 int main()
    22 {
    23     int T,n;
    24     prepare();
    25     scanf("%d",&T);
    26     while(T--)
    27     {
    28         scanf("%d",&n);
    29         int flag=Q.count(n);
    30         if(flag==0)printf("No
    ");
    31         else printf("Yes
    ");
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    2019阿里系电子书合集来了!
    FTP主动模式和被动模式的区别
    Vsftpd运行的两种模式-xinetd运行模式和 standalone模式
    Logstash组件详解(input、codec、filter、output)
    Docker入门-笔记-1
    K8S命令-Kubectl 命令大全
    Nginx-HTTP Strict Transport Security(HSTS)
    IPV6技术笔记(剖析IPv4toIPv6)
    一个交换机到底能带几台摄像头?结合生产经验咱们来分析!
    ELK查询命令详解
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3602365.html
Copyright © 2011-2022 走看看