使用 C++ 構建兩個數字的數字計數
我們提供了三個數字 X、Y 和 N(用於定義範圍 [1,N])。目標是在範圍 [1,N] 中找到所有可以使用 X 和 Y 任意次數構建的數字。
例如,如果 X=2 且 Y=3。數字 6 可以使用 2 三次(2+2+2)或 3 兩次(3+3)構建。同樣,7 可以使用 2 兩次和 3 一次(2+2+3)構建。
我們將透過從 1 到 N 的每個數字中減去 X 或 Y 來做到這一點。如果最終數字減少到 0,則遞增計數。
讓我們透過示例來理解。
輸入
N=10 X=4, Y=3
輸出
Total numbers constructed using X & Y only: 7
解釋
Numbers constructed by 3 and 4 only: 3, 4, 6 (3+3), 7 (3+4), 8 (4+4), 9 (3+3+3), 10 (3+3+4)
輸入
N=10 X=5, Y=4
輸出
Total numbers constructed using X & Y only: 5
解釋
Numbers constructed by 4 and 5 only: 4, 5, 8(4+4), 9 (4+5), 10 (5+5)
下面程式中使用的方案如下
我們取三個整數 X、Y 和 N。
函式 constructNums(int n,int x,int y) 返回可以使用僅 x 和 y 構建的數字的計數。
將初始變數 count 設為 0,表示此類數字。
使用 for 迴圈遍歷數字範圍。i=1 到 i<=n
現在,對於每個數字 num=i,使用 while 迴圈檢查 num>0,
while(num%x==0) 並且 num 不為 0,從中減去 x。
while(num%y==0) 並且 num 不為 0,從中減去 y。
如果在減去 x 和 y 後,數字不能被兩者整除並且大於兩者。從其中減去 x 和 y。
如果在外部 while 迴圈後檢查 num 是否為 0。表示 x、y 或兩者都可以構成 num。遞增 count。
在所有迴圈結束時,count 將包含總數。
返回 count 作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int constructNums(int n,int x,int y){
int count = 0;
for (int i = 1; i <= n; i++) {
int num = i;
while(num>0){
while((num%x)==0 && num!=0)
num-=x;
while((num%y)==0 && num!=0)
num-=y;
if (num>x && num>y)
num=num-x-y;
else
break;
}
if (num==0)
{ count++;}
}
return count;
}
int main(){
int N=20;
int X=5,Y=4;
cout <<"Total numbers constructed using X & Y only:"<<constructNums(N,X,Y);
return 0;
}輸出
如果我們執行上述程式碼,它將生成以下輸出:
Total numbers constructed using X & Y only:14
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP