ให้ด้วยค่าจำนวนเต็มบวก n และภารกิจคือการสร้างจำนวนวันที่คี่จนถึงปีที่กำหนด n
ตัวอย่าง
Input-: days = 500 Output-: number of odd days are: 5 Input-: days = 400 Output-: number of odd days are: 0
วิธีคำนวณจำนวนวันคี่ในจำนวนปีที่กำหนด
ในการคำนวณจำนวนวันคี่สิ่งแรกที่เราต้องตรวจสอบคือว่าปีที่กำหนดเป็นปีอธิกสุรทินหรือไม่ เพราะหากเป็นปีอธิกสุรทินมากกว่าจำนวนวันที่คี่จะมีการเปลี่ยนแปลง ถ้าปีนั้นหารด้วย 100 หรือ 400 ลงตัวแต่ไม่ใช่ 4 ปีนั้นจะเป็นปีอธิกสุรทิน มิฉะนั้น จะเป็นปีธรรมดา หากเราหาโมดูลัสของจำนวนวันทั้งหมดด้วย 7 นั่นคือจำนวนวันในหนึ่งสัปดาห์ ดังนั้น ปีปกติประกอบด้วยวันคี่ 1 วัน และปีอธิกสุรทินประกอบด้วยวันคี่ 2 วัน
แนวทางที่เราใช้ในโปรแกรมที่กำหนดมีดังต่อไปนี้ −
- ป้อนจำนวนวันเป็นอินพุต
- ตรวจสอบว่าปีนั้นเป็นปีอธิกสุรทินหรือวันธรรมดา
- คำนวณวันคี่โดยการหารจำนวนวันทั้งหมดด้วยโมดูลัส
- แสดงผลสุดท้ายเป็นจำนวนวันในหนึ่งปีตั้งแต่ 1 ถึง n
อัลกอริทึม
Start Step 1-> Declare function to calculate number of odd days in a given year int cal_odd(int days) declare int cal_1 = days / 100 declare int cal_2 = days / 400 declare int check_leap = days >> 2 declare int temp = days - check_leap IF (cal_1) set temp += cal_1 Set check_leap -= cal_1 End IF (cal_2) Set temp -= cal_2 Set check_leap += cal_2 End declare int final_days = temp + check_leap * 2 Declare int odd = final_days % 7 return odd step 2->In main() Declare int days = 500 call cal_odd(days) Stop
ตัวอย่าง
#include <iostream>
using namespace std;
//calculate number of odd days in a given year
int cal_odd(int days) {
int cal_1 = days / 100;
int cal_2 = days / 400;
int check_leap = days >> 2;
int temp = days - check_leap;
if (cal_1) {
temp += cal_1;
check_leap -= cal_1;
}
if (cal_2) {
temp -= cal_2;
check_leap += cal_2;
}
int final_days = temp + check_leap * 2;
int odd = final_days % 7;
return odd;
}
int main() {
int days = 500;
cout<<"number of odd days are : "<<cal_odd(days);
return 0;
} ผลลัพธ์
number of odd days are : 5