#10751. 数论第十题(NOIP2011)

数论第十题(NOIP2011)

第十题(NOIP2011)

#include<cstring>
#include<iostream>
#include<string>
using namespace std;
const int SIZE=10000;
const int LENGTH=10;
int n,m,a[SIZE][LENGTH];
int h(int u,int v){
    int ans,i;
    ans=0;
    for(i=1;i<=n;i++)
        if(a[u][i]!=a[v][i])ans++;
    return ans;
}
int main() {
    int sum,i,j;
    cin>>n;
    memset(a,0,sizeof(a));
    m=1;
    while(1){
        i=1;
        while((i<=n)&&(a[m][i]==1))i++;
        if(i>n) break;
        m++;
        a[m][i]=1;
        for(j=i+1;j<=n;j++)a[m][j]=a[m-1][j];
    }
    sum=0;
    for(i=1;i<=m;i++)
        for(j=1;j<=m;j++)sum+=h(i,j);
    cout<<sum<<endl;
    return 0;
}
  1. 【判断题】第21行至多执行n次。
    {{ select(1) }}
  • 正确
  • 错误
  1. 【判断题】将第12行的!=改成==,结果不影响。
    {{ select(2) }}
  • 正确
  • 错误
  1. 【判断题】输入的n为11,不会数组越界。
    {{ select(3) }}
  • 正确
  • 错误
  1. 【判断题】该程序可以正常运行。
    {{ select(4) }}
  • 正确
  • 错误
  1. 【选择题】输入7,输出结果为( )。
    {{ select(5) }}
  • 7
  • 6
  • 57344
  • 114514
  1. 【选择题】该算法的时间复杂度为( )。
    {{ select(6) }}
  • O(1)
  • O(n)
  • O(n²)
  • O(2²ⁿ)