小试牛刀三题签到

在这里插入图片描述
牛客的签到题… 枸橘…

汽水瓶----我不会写是真的吗?

某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。

小张手上有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)     

明明的随机数

明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

#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)

进制转换

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 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++啊

猜你喜欢

转载自blog.csdn.net/daxuanzi515/article/details/130077260
今日推荐