!!不知道哪错了,,

img

题目是求一个最小的正整数n,使得n/2是某个自然数平方,n/3是某个自然数的立方。
不知道我写的这错在哪里了,

放个清点的图

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7523158
  • 这篇博客也不错, 你可以看下详解:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
  • 除此之外, 这篇博客: 叉乘法求已知顶点坐标的n边形面积。中的 输出: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    n 边形的面积。

     

    Sample Input

     

     

    3 0 0 1 0 0 1 4 1 0 0 1 -1 0 0 -1 0

     

     

    Sample Output

     

    0.5 2.0

     

     

     

    这里介绍一种叉乘法,用来求已知每个顶点坐标的 n 边形的面积。

    十分方便。

    设 n 边形的点,按顺时针/逆时针的顺序依次是  (x1,y1)(x2,y2)......(xn,yn)

      那么:s = (x1y2-x2y1)/2 + (x2y3-x3y2)/2 +......+ (xny1-x1yn)/2

    这时的 s 是有向面积,还需要取绝对值。

    写成代码就是:

       

    for(i = 0;i<n;i++)
            {
                 s += (a[i]*b[(i+1)%n]-a[(i+1)%n]*b[i])/2.0;
            }
    s = fabs(s);
    

     因为最后一项不是(xn yn+1-....)而是y1,

    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
    	int n,x[110],y[110];
    	double s;
    	while(~scanf("%d",&n)&&n)
    	{
    		s=0.0;
    		for(int i=0;i<n;i++)
    		{
    			scanf("%d%d",&x[i],&y[i]);
    		}
    		for(int i=0;i<n-1;i++)
    		{
    			s+=fabs((x[i]*y[i+1]-x[i+1]*y[i])*1.0/2);
    		}
    		s+=fabs((x[n-1]*y[0]-x[0]*y[n-1])*1.0/2);
    		printf("%.1lf\n",s);
    	}
    	return 0;
     } 

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^