2 条题解

  • 0
    @ 2024-12-28 20:46:59

    Step 1 暴力模拟

    直接根据题意模拟。可以通过 n=103n=10^3 时的数据。

    Step 2 观察样例

    观察样例发现,输出的就是所有小于等于 nn 的完全平方数。枚举 1n1\sim n,找出完全平方数并输出。可以通过 n=107n=10^7 时的数据。

    Step 3 继续优化

    直接枚举完全平方数的算术平方根,直到算术平方根的平方大于 nn。可以通过 n=1014n=10^{14} 时的数据。

    以下仅给出 Step 3 代码。

    #include<bits/stdc++.h>
    #define int long long
    #define INF 0x3f3f3f
    using namespace std;
    int n;
    signed main(){
    	cin>>n;
    	for(int i=1;i*i<=n;i++)
    		cout<<i*i<<" ";
    	return 0;
    }
    
    • 0
      @ 2024-12-22 11:04:02

      C :

      #include<stdio.h>
      int a[100001];
      main()
      {
      	int n;
      	scanf("%d",&n);
      	int i,j;
      	for(i=1;i<=n;i++)
      	{
      		for(j=i;j<=n;j++)
      		{
      			if(j % i==0)
      			{
      				a[j]++;
      			}
      		}
      	}
      	for(i=1;i<=n;i++)
      	{
      		if(a[i]%2==1)printf("%d ",i);
      	}
      	return 0;
      }
      

      C++ :

      #include<iostream>
      #include<iomanip>
      #include<cstring>
      //#include<ctime>
      #include<cstdio>
      using namespace std;
      int main()
      {
      	//freopen("test3.in","r",stdin);
      	//freopen("test3.out","w",stdout);
      	int n,i,j;
      	bool a[1000000];
      	memset(a,true,sizeof(a));
      	cin>>n;
      	for(i=2;i<=n;i++)
      	  for(j=i;j<=n;j++)
      	    if(j%i==0)a[j]=!a[j];
      	for(i=1;i<=n;i++)
      	  if(a[i]) cout<<i<<' ';
      	cout<<endl;
      	//printf("%0.3f",float(clock())/1000);
      	return 0;
      }
      
      • 1

      信息

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