c705 - Int32 to IPv4
題目描述
題目要求將一個 32 位元整數轉換為 IPv4 位址的格式 (a.b.c.d)。IPv4 位址由四個介於 0 到 255 之間的數字組成,每個數字代表一個位元組。
解題思路
解題思路是將 32 位元整數拆分成四個 8 位元的組件,分別對應 IPv4 位址的四個數字。這可以使用除法和取模運算來實現。
- 第一個數字 (a) 是整數除以 16777216 (2^24) 的商。
- 第二個數字 (b) 是將整數除以 16777216 後的餘數除以 65536 (2^16) 的商。
- 第三個數字 (c) 是將整數除以 65536 後的餘數除以 256 (2^8) 的商。
- 第四個數字 (d) 是將整數除以 256 後的餘數。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include<stdio.h>
int main(){
long long int x,a,b,c,d;
while(scanf("%lld",&x)>0){
a=x/16777216;
x%=16777216;
b=x/65536;
x%=65536;
c=x/256;
d=x%256;
printf("%lld.%lld.%lld.%lld\n",a,b,c,d);
}
}