标签:恶心 避免 inf 包含 == 整数 png dig bsp
本人水平有限,题解不到为处,请多多谅解
本蒟蒻谢谢大家观看
#include<bits/stdc++.h> #pragma GCC optimize(3) #define N 10000010 using namespace std; int n,m,tot,sum; int a[N],p[N],yzl[N]; inline int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch==‘-‘)f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} return x*f; } void inint(){ freopen("div.in","r",stdin); freopen("div.out","w",stdout); } int main() { // inint(); n=read(),m=read(); for(int i=1;i<=m;i++) a[i]=read(); for(int i=1;i<=m;i++){ for(int j=1;j*j<=a[i];j++){ if(a[i]%j==0){ p[++tot]=j; p[++tot]=a[i]/j; } if(a[i]==j*j)//避免平方数的约数重复计算两次 tot--; } } sort(p+1,p+tot+1); //cout<<"GG"<<endl; //for(int i=1;i<=tot;i++) // cout<<p[i]<<" "; //cout<<endl; int opt=-1,cnt=1; for(int i=1;i<=tot;i++){ if(p[i]<=n){ if(p[i]!=opt){ yzl[cnt]++;//如果前后都不相等,那么都在k=1中 opt=p[i]; cnt=1; //cout<<"yzl[cnt]= "<<yzl[cnt]<<endl; //cout<<"cnt= "<<cnt<<endl; } else { cnt++;//否则往上累加,k=2,3,4…… } } } for(int i=1;i<=m;i++){ sum+=yzl[i]; } //cout<<"sum= "<<sum<<endl; cout<<n-sum<<endl;//先求第一行 for(int i=1;i<=m;i++) cout<<yzl[i]<<endl; return 0; } /* 10 3 4 6 7 5 1 8 */
标签:恶心 避免 inf 包含 == 整数 png dig bsp
原文地址:https://www.cnblogs.com/nlyzl/p/11562036.html