C++博客 :: 首页 :: 新随笔 ::  ::  :: 管理

pku1218

Posted on 2010-08-23 18:40 Kevin_Zhang 阅读(215) 评论(0)  编辑 收藏 引用 所属分类: 模拟

----------------------------------------------------------------步步为营,各个击破---------------------------------------------------------------
就是求一个数的约数个数。若有奇数个约数,开门;偶数个,关门。
设有一数N有有约数B,则必有另一约数N/B,其总是成对出现。
惟独完全平方数N=B*B,此是只有一个约数了,完全平方数的约数为奇数个。

#include"iostream"
#include
"stdio.h"
using namespace std;

int a[12],b[12],t,n,asw;

int num(int n)
int i=0;
  
while(n>=b[i])//n<b[i] stop out a[i-1]
 {
  i
++;
 }

  
return a[i-1];

}

int main()
{
    
for(int i=1;i<=12;i++)
    
{a[i-1]=i;
     b[i
-1]=i*i;
    }

    scanf(
"%d",&t);
    
while(t)
    
{scanf("%d",&n);
     asw
=num(n);
     printf(
"%d\n",asw);
     t
--;
    }

    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理