机试 | 基础入门

1.数字反转

题目描述
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如123.4,要求把这个数字翻转过来,变成4.321并输出。
题解
利用string操作实现数字反转,若进行数字操作过于繁琐,直接利用字符串性质进行操作。

#include<bits/stdc++.h>
using namespace std;
string a;
signed main()
{
   
    cin>>a;
    int len=a.size();读取长度
    for(int i=len-1;i>=0;i--)反转
    cout<<a[i];
    return 0;
}

2.P2181 对角线

题目描述
对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点。请求楚图形中对角线交点的个数。

例如,6边形:

在这里插入图片描述

输入格式
第一行一个n,代表边数。

输出格式
第一行输出交点数量

输入输出样例
输入 #1 3
输出 #1 0

输入 #26
输出 #215

说明/提示
50%的测试数据 3≤N≤100;
100%的测试数据 3≤N≤100000.

题解一(大佬解法)
此题求对角线交点个数,且已知没有三条线交于一点情况。四边形有两条对角线交于一点,即此题相当于求多边形内四边形个数,即n个顶点中选择4个点的情况个数。
运用排列组合,可得:n(n-1)(n-2)(n-3)/4x3x2x1
根据测试数据范围,需要将数据类型提升精度,
或将公式转化为:n(n-1)/2*(n-2)/3*(n-3)/4
不会发生除不尽导致的向下取整的原因:
n和(n-1)两数中一定有一个能够被2整除,n、(n-1)、(n-2)三数中一定有一个能够被3整除,同理能够被4整除。

代码

unsigned long long n,ans;
int main()
{
   
    scanf("%lld"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值