SY_XLR 2021-09-30 14:58 采纳率: 100%
浏览 85
已结题

平方数,给你一个整数集合A(无重复元素),如果x,y都属于A,且y=x*x,那么组成一个数对,请找出这个集合中满足条件的数对的个数。比如说集合A={2,3,4},则只有4=2*2,则答案为1。

Description
描述
给你一个整数集合A(无重复元素),如果x,y都属于A,且y=xx,那么组成一个数对,请找出这个集合中满足条件的数对的个数。比如说集合A={2,3,4},则只有4=22,则答案为1。

输入
每个样例占2行,第一行为一个非负整数n,n<=1000,为集合中元素的个数,如果n为0则输入结束。第二行为n个整数,为集合的元素,所有的元素为非负整数,且<=100,000,000,两个整数之间有一个空格隔开。

输出
每行输出一个样例的结果。

Sample Input
3
2 3 4
5
3 36 5 9 6
0

Sample Output
1
2

#include <stdio.h>
int main()
{
    int i,j,k,s,n,A[1001],x,y;
    while(scanf("%d",&n))
    {
        s = 0;
        if(n == 0)
        {
            break;
        }
        for(i = 0;i < n;i++)
        {
            scanf("%d",&A[i]);
            if(A[i]==1)
            {
                s-=1;
            }
        }
        for(j = 0;j < i;j++)
        {
            x = A[j];

            for(k = 0;k < i;k++)
            {
                 y = A[k];
                 if(y == x * x)
               {
                 s++;
               }
            }
        }
        printf("%d\n",s);
    }
    return 0;
}

结果为Wrong Answer,哪里错了呢?

展开全部

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-09-30 16:42
    关注

    集合的元素,所有的元素为非负整数,且<=100,000,000, x*x的平方数超int范围了, 所以A[1001] ,x,y;类型应改为:long long int A[1001],x,y;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    SY_XLR 2021-10-01 05:42

    我改为了:long long A[1001],x,y;
    14行也改为了%lld,为什么还是错了?

    回复
    qzjhjxj 回复 SY_XLR 2021-10-01 05:47

    15行到17行不需要吧,1也是满足条件的,不需要排除在外。

    回复
    qzjhjxj 回复 qzjhjxj 2021-10-01 05:47

    15行到18行不需要吧,1也是满足条件的,不需要排除在外。

    回复
    展开全部6条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 10月1日
  • 创建了问题 9月30日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部