ニウケのチェックインの質問... シトラス...
ソーダボトル- 書けないのですが本当ですか?
ある店では、空のソーダボトル3本をソーダ1本と交換できると規定しており、ボスから空のソーダボトルを借りることができます(ただし返却する必要があります)。
Xiao Zhang は空のソーダボトルを n 個持っています。彼女は最大何本のソーダボトルを飲めるのか知りたいと考えています。
データ範囲:入力された正の整数は1≤n≤100を満たす
注: この質問には複数の入力セットがあります。0 を入力すると入力の終了を示し、結果は出力されません。
入力例:
3
10
81
0
出力例:
1
5
40
例:
样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换
样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板
//同时 判断n%3,n//3 注意只要有两瓶就换一瓶
#include<bits/stdc++.h>
using namespace std;
int x;
int fun(int a)
{
if(a == 0 || a == 1) return 0;
if(a == 2) return 1;// 2p->1f
else
{
return int(a/3) + fun(int(a/3)+a%3);
}
}
int main()
{
while(cin>>x)
{
if(x==0) break;
int res = fun(x);
printf("%d\n",res);
}
return 0;
}
# 数学分析??? 说两个空瓶可以换一个瓶...等价代换 == > 3*空瓶 = 饮料 + 1*空瓶...
# 存在上述等式的话 可以代数验证...
# x = 2 ,空瓶两个 =>借一个空瓶 换一瓶 再还 最后能喝到0瓶
# x = 3 空瓶三个 能换一瓶 3//2 = 1 借多少都还不了
# x = 4 空瓶4个 能先换一瓶 再借2瓶 再换一瓶 最后还两瓶 能喝到0瓶...
while 1:
x = int(input())
if x == 0:
break
if x == 1:
print(0)
elif x == 2:
print(1)
else:
print(x//2)
明らかな乱数
明らかに、1 から 500 までの N 個のランダムな整数が生成されます。重複している数字を削除、つまり同じ数字を1つだけ残して残りを削除し、その数字を小さい順に並べ替えて、並んだ順に出力してください。
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int a[N],v[N];
int n;
int main()
{
cin>>n;
for(int i=1;i<N;i++)
{
cin>>a[i];
v[a[i]]=1;
}
for(int i=1;i<N;i++)
{
if(v[i]==1)
{
printf("%d\n",i);
}
}
return 0;
}
import sys
n = int(input())
s = set()
for i in range(n):
x = int(input())
s.add(x)
l = list(s)
l = sorted(l)
for i in l:
print(i)
変換
16 進数を受け取り、その値の 10 進数表現を出力するプログラムを作成します。
データ範囲: 結果が 1≤n≤2^31−1 以内であることを保証
#include<bits/stdc++.h>
using namespace std;
string s;
int ans, temp, j;
int main()
{
cin>>s;
j = s.size()-3;
for(int i=2;i<s.size();i++)
{
if(s[i]<='9' && s[i]>='0')
{
temp = s[i]-'0';
ans += temp*pow(16,j);
// cout<<ans<<" "<<temp<<endl;
j-=1;
}
else if(s[i]<='F' && s[i]>='A')
{
temp = s[i] -'A'+10;
ans += temp*pow(16,j);
// cout<<ans<<" "<<temp<<endl;
j-=1;
}
}
cout<<ans<<endl;
return 0;
}
import sys
import math
s = list(input())[2:]
ans = 0
l = {
'A': 10,'B': 11,'C':12,'D':13,'E':14,'F':15}
ll = 0
for i in s[::-1]:
if i in l:
for j in l:
if i==j:
ans += l[j]*math.pow(16,ll)
else:
t = int(i)
ans+= t*math.pow(16,ll)
ll+=1
print(int(ans))
事実は、Python が書くのに最適であることを証明しています...
しかし、我慢できません、私は C++ です