关于 1 的问题
查看原帖
关于 1 的问题
366455
西湖水妖楼主2022/3/14 20:29

如果我交这样的代码,会 WA。

#include <bits/stdc++.h>
using namespace std;
int n, ans;
int main()
{
    start: scanf("%d", &n);
    if(! n)
        return 0;
    if(n == 1)
    {
        printf("0\n");
        goto start;
    }
    ans = n;
    for(int i = 2; i * i <= n; ++ i)
        if(! (n % i))
        {
            ans /= i;
            ans *= i - 1;
            while(! (n % i))
                n /= i;
        }
    if(n != 1)
    {
        ans /= n;
        ans *= n - 1;
    }
    printf("%d\n", ans);
    main();
}

如果改成这样就 AC 了。

#include <bits/stdc++.h>
using namespace std;
int n, ans;
int main()
{
    scanf("%d", &n);
    if(! n)
        return 0;
    ans = n;
    for(int i = 2; i * i <= n; ++ i)
        if(! (n % i))
        {
            ans /= i;
            ans *= i - 1;
            while(! (n % i))
                n /= i;
        }
    if(n != 1)
    {
        ans /= n;
        ans *= n - 1;
    }
    printf("%d\n", ans);
    main();
}

R71407574 记录详情R71407696 记录详情

是我的理解出错了吗?我认为 01,11\dfrac{0}{1},\dfrac{1}{1} 都是可以约分的,所以我进行了特判。

2022/3/14 20:29
加载中...