#include "mainwindow.h" #include "ui_mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); } MainWindow::~MainWindow(){ delete ui; } void MainWindow::on_pushButton_clicked(){ QElapsedTimer timer; int solutions = 0; qint64 before, after; timer.start(); for(int u=1; u<=9 ;u++){ for(int q=0; q<=9; q++){ for(int a=1; a<=9; a++){ for(int p=0; p<=9; p++){ if(u==q || u==a || u==p || q==a || q==p || a==p){ continue; } int uqq = u*100 + q*10 + q; int aqqp = a*1000 + q*100 + q*10 + p; if(4*uqq == aqqp){ solutions++; } } } } } before = timer.nsecsElapsed(); ui->stupidLabel->setText("Stupid Method : " + QString::number(before) + " ns, " + QString::number(solutions) + " solutions(s)"); solutions = 0; timer.start(); for(int u=1; u<=9 ;u++){ if(u*4 < 10){ continue; } for(int q=0; q<=9; q++){ if(u==q || (u*4)%10 != (q*4)%10){ continue; } for(int p=1; p<=9; p++){ if((q*4)%10 != p || u==p || q==p || (q*4)/10 + (q*4)%10 != q){ continue; } for(int a=1; a<=3; a++){ if((u*4)/10 != a){ continue; } if(u==a || q==a|| p==a){ continue; } int uqq = u*100 + q*10 + q; int aqqp = a*1000 + q*100 + q*10 + p; if(4*uqq == aqqp){ solutions++; } } } } } after = timer.nsecsElapsed(); ui->improvedLabel->setText("Improved Method : " + QString::number(after) + " ns, " + QString::number(solutions) + " solutions(s)"); ui->compLabel->setText("Efficiency Comparation : " + QString::number((double)after/before*100) + "%"); }