有没有比这道题的最佳答案更好的答案?
来源:百度知道 编辑:UC知道 时间:2024/05/16 11:02:49
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
找出所有满足如下条件的三位数:它既是完全平方数;又有两位数字相同。
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
因为每一位数都相同的完全平方数并不存在,所以在检测每一个三位数的完全平方数时,
只需判断该平方数有无重复的数字。 这么一来,程序可以很简短:
#include<iostream>
void main( ) {
for( int i = 10, square = i*i; square < 1000; i++, square = i*i )
for( char count[ 10 ] = ""; square; square /= 10 )
if( ++count[ square % 10 ] > 1 ) std::cout << i*i << '\n';
}
严格来说,代码里的 char count[ 10 ] = ""; 应该写成 int count[ 10 ] = { 0 }; ,
但后者不符合 for 循环的初始表达式的语法,所以若坚持使用后者会增加一行代码。:)
void main()
{
for(int i = 10;i<=31;i++)
{
int bai,ge,shi,fang;
fang=i*i;
bai=fang/100;
shi = fang