Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คีย์บอร์ด 2 ปุ่มใน C++


สมมติว่าเรามีอักขระ 'A' เพียงตัวเดียวในโปรแกรมแก้ไขข้อความ เราสามารถดำเนินการสองครั้งในจดหมายนี้สำหรับแต่ละขั้นตอน -

  • คัดลอกทั้งหมด − เราสามารถคัดลอกอักขระทั้งหมดที่มีอยู่ในแผ่นจดบันทึกได้
  • วาง − เราสามารถวางอักขระที่คัดลอกครั้งล่าสุดได้

สมมุติว่าเรามีตัวเลข n เราต้องได้ n 'A' บนแผ่นจดบันทึกโดยทำตามขั้นตอนขั้นต่ำที่อนุญาต เราต้องหาผลลัพธ์ในจำนวนขั้นตอนขั้นต่ำเพื่อให้ได้ n 'A' ดังนั้นหาก n ที่กำหนดคือ 3 คำตอบจะเป็น 3 ดังนั้นในตอนแรกจะมี "A" เพียงตัวเดียว ตอนนี้ให้คัดลอกและวางสิ่งนี้ ดังนั้นจะมี "AA" ในตอนนี้ ตอนนี้เราสามารถวางได้อีกครั้ง ดังนั้นจะมีการใส่ 'A' หนึ่งอัน ดังนั้นเราจะได้ “AAA”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ret :=0
  • สำหรับ k ในช่วง 2 ถึง n
    • ในขณะที่ n mod k ไม่ใช่ 0
      • ret :=ret + k และ n :=n / k
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int minSteps(int n) {
      int ret = 0;
      for(int k = 2; k <= n; k++){
         for(; n % k == 0; ret += k, n /= k);
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.minSteps(10));
}

อินพุต

10

ผลลัพธ์

7