用户工具

站点工具


2020-2021:teams:namespace:牛客多校第七场

这是本文档旧的修订版!


牛客多校第七场

B

GCD的递归。比较难的C语言练习。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
long long int t, tmp, ans[20005], top = 1;
 
long long gcd(long long a,long long b)
{
	return b ? gcd(b, a % b) : a;
}
 
void solve(long long int n, long long int m, long long int res)
{
    if(n > m)
	{
        tmp = m;
        m = n;
        n = tmp;
    }
    if(res == 0)
	{
        return;
    }
    long long int k = m - m % n;
    while(k--)
	{
        ans[top++] = n;
    }
    solve(n, m % n, n * (m % n));
    return;
}
 
int main()
{
	scanf("%d",&t); 
    while(t--)
	{
        long long n, m;
        top = 1;
        scanf("%lld%lld", &n, &m);
        solve(n, m, n * m);
        long long l = n + m - gcd(n, m);
        printf("%lld\n", l);
        int i; 
        for(i=1;i<=l;i++)
		{
			printf("%lld ",ans[i]);
		}
        printf("\n");
    }
}

D

水。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
#include<math.h>
 
int main()
{
    int k;
    scanf("%d",&k);
    while(k--)
	{
        int n;
        scanf("%d",&n);
        if(n==1||n==24)
		{
            printf("Fake news!\n");
        }
		else
		{
            printf("Nobody knows it better than me!\n");
        }
    }
    return 0;
}

H

数论分块。注意先加上模再取模。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
long long int n, k, r, l, cnt, cnt1;
 
int main()
{
    scanf("%lld%lld", &n, &k);
    if(k > n)
	{
		cnt1 = (cnt1 + k - n + 1000000007) % 1000000007;
	}
    k=n<k?n:k;
    for(l = 1ll; l <= k; l = r + 1ll)
    {
        if(n / l)
		{
			r =  n/(n/l);
		}
        else
		{
			r = k;
		}
        r=r<k?r:k;
        cnt = (cnt + (r - l + 1ll) * (n / l) + 1000000007) % 1000000007;
        if(n % r == 0ll)
		{
			cnt1 = (cnt1 + r - l + 1000000007) % 1000000007;
		}
        else
		{
			cnt1 = (cnt1 + r - l + 1ll + 1000000007) % 1000000007;
		}
    }
    cnt = (2ll * cnt - n + 1000000007) % 1000000007;
    printf("%lld\n", (cnt + cnt1 + 1000000007) % 1000000007);
}
2020-2021/teams/namespace/牛客多校第七场.1596684887.txt.gz · 最后更改: 2020/08/06 11:34 由 great_designer