问题标题: 酷町堂:4542 三位数中的任意两位

0
0
已解决
李素妍
李素妍
新手天翼
新手天翼

李素妍在2020-08-03 14:56:26追加了内容

#include <iostream>
using namespace std;
int main(){
    int t=1;
    for(int i=100;i<=999;i++){
        int ge=i%10,shi=i/10%10,bai=i%100;
        if((ge*shi)+36==i*i||(ge*bai)+36==i*i||(shi*bai)+36==i*i){
            cout<<i<<endl;
            t=0;
        }
    }
    if(t==1)cout<<0;
    return 0;
}


1
已采纳
康曦
康曦
中级光能
中级光能

核心

bool kx(int t){
    if(abs(sqrt(t)-int(sqrt(t)))<=0.000001)
    return true;
    return false;
}
int main(){
    int a=0,b=0,c=0,x=0,y=0;
   for(int i=100;i<=999;i++){
        a=0;
        b=0;
        c=0;
        a=i%10;
        b=i/10%10;
        c=i/100;
        if(kx(a*b+36)&&kx(a*c+36)&&kx(c*b+36)){
            cout<<i<<endl;
            x=1;
           }
   }
   if(x==0) cout<<0;
    return 0;

 

1
黄子扬
黄子扬
初级天翼
初级天翼

您要知道,完全平方数是1,4,9,16之类的,所以,我们只需要判断sqrt是不是整数就行

int(sqrt)-sqrt==0,就是完全平方数,蔡乐毅的是完全不严谨的

黄子扬在2020-08-03 14:54:51追加了内容

您把代码发一下,我帮您修改

黄子扬在2020-08-03 14:58:14追加了内容

再说一下,您的十位数和百位数取位数取错了

黄子扬在2020-08-03 15:00:07追加了内容

我笑了,sqrt(36)==6,没有小数部分,建议你下载个C++试试,真的,不要钱@楼上

黄子扬在2020-08-03 15:39:21追加了内容

@赵逸凡 

 

0
蔡乐毅
蔡乐毅
高级光能
高级光能
  • if(abs(sqrt(x)-(int)sqrt(x))<=0.000001){
  • return 1;
  • }
  • return 0;
  • 用函数
  • for(int i=100;i<=999;i++){
  • a=i/100;
  • b=i%100/10;
  • c=i%10;
  • if(pd(a*b+36)&&pd(a*c+36)&&pd(b*c+36)){
  • cout<<i<<endl;
  • f=1;
  • }
  • }
  • 在循环里用
我要回答