小编Van*_*rna的帖子

黑客排名:项目欧拉#1

我是竞争性编程的新手,我在Hacker Rank上遇到了问题.问题陈述如下:

"如果我们列出10以下的所有自然数是3或5的倍数,我们得到3,5,6和9.这些倍数的总和是23.

找出N以下3或5的所有倍数之和.

输入格式第一行包含表示测试用例数的T. 接下来是T行,每行包含一个整数N.

输出格式对于每个测试用例,打印一个整数,表示N以下所有3或5的倍数之和."

约束

1≤T≤10^ 5

1≤N≤10^ 9

我编写了以下代码,成功满足3个测试用例,但在剩下的两个测试用例中失败了.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int func(int p,int n)
{
    int j;
    n=n-1;
    j=n/p;
    return (p*j*(j+1))/2;
}

int main()
{
    unsigned long int n;
    int t,j,count;
    scanf("%d",&t);
  if(t>=1 && t<=100000){
        for(j=0;j<t;j++)
        {
            scanf("%lu",&n);
        if(n>=1 && n<=1000000000)
        {
                count=func(3,n)+func(5,n)-func(15,n);
                printf("%d\n",count);
            }

        }}
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的代码中有什么错误.为什么不被接受?

c algorithm function

5
推荐指数
1
解决办法
1449
查看次数

参数传入C函数

我是新手.所以请耐心等待,

#include<stdio.h>

    int abc(int k)
    {
    k++;

    }
    int main()
    {
    int a=1;
    printf("%d",abc(a));

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

以上程序的输出是:1

我的问题是输出不应该是'2',因为实际参数将'1'的值传递给形参,并且必须通过函数abc递增.

当我将函数调用更改为

printf("%d",abc(1));
Run Code Online (Sandbox Code Playgroud)

输出是一些垃圾值.

参数传递如何在这里工作?请解释.

c function parameter-passing

-1
推荐指数
1
解决办法
79
查看次数

标签 统计

c ×2

function ×2

algorithm ×1

parameter-passing ×1