CCF 1040. 除法游戏 (Standard IO)

简介: 小A和小B是一对好朋友,他们的爱好是研究数字。学过除法之后,他们就发明了一个新游戏:两人各说一个数字分别为a和b,如果a能包含b的所有质数因子,那么A就获胜。但是当数字太大的时候,两个朋友的脑算速度就有点跟不上了。现在,请你写个程序,来判断胜负吧:输入两个正整数,表示a和b(2≤a, b≤10 18)。如果a包含了b的所有质数因子,则输出“Yes”,否则输出“No”(输出时没有引号)。

题目描述

小A和小B是一对好朋友,他们的爱好是研究数字。学过除法之后,他们就发明了一个新游戏:两人各说一个数字分别为a和b,如果a能包含b的所有质数因子,那么A就获胜。但是当数字太大的时候,两个朋友的脑算速度就有点跟不上了。

现在,请你写个程序,来判断胜负吧:输入两个正整数,表示a和b(2≤a, b≤10 18)。如果a包含了b的所有质数因子,则输出“Yes”,否则输出“No”(输出时没有引号)。


输入

输入两个正整数a和b,中间用一个空格隔开。


输出

如果a包含了b的所有质数因子,则输出“Yes”,否则输出“No”(输出时没有引号)。


样例输入

输入1:

120 75

输入2:

7 8


样例输出

输出1:

Yes

输出2:

No


数据范围限制

2≤a, b≤10 18

这是在CCF上面100通过的代码

个人觉得这种方法是有问题的

需要判断y/a的质因子,如果y/a是质数才是对的!

可以试试

54 48

51 27

这两组数据测出来的就是错的

#include <stdio.h>
int main(){
    long long int a,b,c,x,y;
    scanf("%lld%lld",&a,&b);
    x=a;y=b;
    while (b){
        c=a%b;a=b;b=c;      //辗转相除法,不然会超时
    }
    if (a==1)
    printf("No");
    if(a>1)
    {
        if(x%(y/a)==0) 
        printf("Yes");
        else 
        printf("No");
    }
    return 0;
}

我自己原来写的只有40分。。。没办法。。

#include <stdio.h>
int prime(int n)
 {
 int i;
 if (n==1)
  return 0;
 else{
  for(i=2;i*i<=n;i++)
  {
   if(n%i==0)
   {
    return 0;
   }
  }
  return 1;
 }
}
int main()
{
 int a,b,c,i,j=0,l,k,d[100]={},d1[100]={0};
 scanf("%d%d",&a,&b);
 for(i=1;i<=a;i++)
 {
  if((a%i==0)&&(prime(i)))
  {
   d[j]=i;
   j++;
   k=j;
  }
 }j=0;
 for(i=1;i<=b;i++)
 {
  if((b%i==0)&&(prime(i)))
  {
   d1[j]=i;
   j++;
   l=j;
  }
 }
 for(i=0;i<k;i++)
 {
  printf("%d ",d[i]);   //将其中的打印出来,放上去之前可以删掉,只是为了分析而已
 }
 printf("\n");
 for(j=0;j<l;j++)
 {
  printf("%d ",d1[j]);  //打印出来,放上去之前可以删掉,只是为了分析而已
 }
 int flag=0;
 for(i=0;i<l;i++)
 {
  for(j=0;j<k;j++)
 {
   if(d1[i]==d[j])
   {
    flag++;
    break;
  }    
 }
}
if(flag==l)
 printf("Yes\n");
else
 printf("No\n");
 return 0;
}
相关文章
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
4月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
2月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
46 2
|
3月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
3月前
|
缓存 Java
【IO面试题 一】、介绍一下Java中的IO流
Java中的IO流是对数据输入输出操作的抽象,分为输入流和输出流,字节流和字符流,节点流和处理流,提供了多种类支持不同数据源和操作,如文件流、数组流、管道流、字符串流、缓冲流、转换流、对象流、打印流、推回输入流和数据流等。
【IO面试题 一】、介绍一下Java中的IO流
|
5月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流处理二进制数据,如图像,由InputStream/OutputStream家族管理;字符流处理文本,基于Reader/Writer,适于文本文件。在文件复制示例中,字节流用FileInputStream/FileOutputStream,字符流用FileReader/FileWriter。选择流类型取决于数据类型和处理需求,文本文件优选字符流,二进制数据则选字节流。
73 6
|
4月前
|
存储 缓存 Java
Java零基础入门之IO流详解(二)
Java零基础入门之IO流详解(二)
|
4月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
4月前
|
存储 缓存 Java
Java零基础入门之IO流详解(一)
Java零基础入门之IO流详解(一)