1 条题解

  • 0
    @ 2025-8-24 22:43:47

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar scp020
    这是一个亖人 || 最后在线时间:2025年8月24日9时5分

    搬运于2025-08-24 22:43:47,当前版本为作者最后更新于2023-01-01 18:15:23,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目大意

    给定一个函数 f(x)f(x) 的各项的系数,让你画出这个函数图像。

    解决

    因为这道题只是让我们画出在整数点上的图像,所以我们考虑从 00n1n-1 枚举横坐标,即可求出对应的纵坐标,进行记录即可。

    这里需要一个 calccalc 函数,顾名思义,就是求出一个 xx 对应的 yy 的值。对于次数为 ii 的项(常数项认为是次数为 00),当前项的值为 ai×xia_i \times x ^ i

    特殊注意的是:本题输出顺序有所调整。如下图所示。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define Getchar() p1==p2 and (p2=(p1=Inf)+fread(Inf,1,1<<21,stdin),p1==p2)?EOF:*p1++
    #define Putchar(c) p3==p4 and (fwrite(Ouf,1,1<<21,stdout),p3=Ouf),*p3++=c
    char Inf[1<<21],Ouf[1<<21],*p1,*p2,*p3=Ouf,*p4=Ouf+(1<<21);
    inline void read(long long &x,char c=Getchar())
    {
    	bool f=c!='-';
    	x=0;
    	while(c<48 or c>57) c=Getchar(),f&=c!='-';
    	while(c>=48 and c<=57) x=(x<<3)+(x<<1)+(c^48),c=Getchar();
    	x=f?x:-x;
    }
    long long n,m,k,a[10];
    char ans[200][200];
    inline long long ksm(long long a,long long b)
    {
    	long long ret=1;
    	while(b)
    	{
    		if(b&1) ret=ret*a,b--;
    		a=a*a,b>>=1;
    	}
    	return ret;
    }
    inline long long calc(const int &x)
    {
    	long long ret=0;
    	for(int i=0;i<=k;i++) ret+=a[i]*ksm(x,i);
    	if(ret>m) return -50;
    	return ret;
    }
    int main()
    {
    	read(n),read(m),read(k);
    	for(int i=0;i<=k;i++) read(a[i]);
    	for(int i=0;i<n;i++) ans[m-calc(i)][i]='*';
    	for(int i=1;i<=m;i++,Putchar('\n'))
    		for(int j=0;j<n;j++)
    			if(ans[i][j]=='*') Putchar('*');
    			else Putchar('.');
    	fwrite(Ouf,1,p3-Ouf,stdout),fflush(stdout);
    	return 0;
    }
    
    • 1

    信息

    ID
    8203
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者