序列

Description
数列A满足An = An-1 + An-2 + An-3, n >= 3

编写程序,给定A0, A1 和 A2, 计算A99
Input
输入包含多行数据

每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 32767)
数据以EOF结束
Output
对于输入的每一行输出A99的值
Sample Input
1 1 1
Sample Output
69087442470169316923566147

看到样例就应该知道是一个大数模拟。想起之前cf一道题上,我还傻乎乎的用了大数模拟,其实long long完全装得下。一看这么多位数,吓得我开了4个long long,然而有的时候后几位开头可能是0,因此需要用printf(“%.10I64d”,a[4]);的姿势。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
long long a[4], b[4], c[4], d[4], temp, pre;
int main()
{
    int i, j, m, n, ans, a0, a1, a2;
    temp = 1;
    for (i = 1; i <= 10; i++)
        temp = temp * 10;
    while (scanf("%d%d%d", &a0, &a1, &a2) != EOF)
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        memset(c, 0, sizeof(c));
        memset(d, 0, sizeof(d));
        d[0] = a0; d[1] = a1; d[2] = a2;
        for (i = 3; i <= 99; i++)
        {
            d[3] = d[0] + d[1] + d[2];
            pre = 0;
            if (d[3] >= temp)
            {
                pre = d[3] / temp;
                d[3] = d[3] - pre* temp;
            }
            c[3] = c[0] + c[1] + c[2] + pre;
            pre = 0;
            if (c[3] >= temp)
            {
                pre = c[3] / temp;
                c[3] = c[3] - pre* temp;
            }
            b[3] = b[1] + b[2] + b[0] + pre;
            pre = 0;
            if (b[3] >= temp)
            {
                pre = b[3] / temp;
                b[3] = b[3] - pre* temp;
            }
            a[3] = a[0] + a[1] + a[2] + pre;
            a[0] = a[1]; b[0] = b[1]; c[0] = c[1]; d[0] = d[1];
            a[1] = a[2]; b[1] = b[2]; c[1] = c[2]; d[1] = d[2];
            a[2] = a[3]; b[2] = b[3]; c[2] = c[3]; d[2] = d[3];
        }
        if (a[3])
        {
            cout << a[3];
            printf("%.10I64d", b[3]);
            printf("%.10I64d", c[3]);
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else if (b[3])
        {
            cout << b[3];
            printf("%.10I64d", c[3]);
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else if (c[3])
        {
            cout << c[3];
            printf("%.10I64d", d[3]);
            cout << endl;
        }
        else
            cout << d[3] << endl;

    }

    return 0;
}

看到学长的java简单的通过,心中十万头草泥马……

资源下载链接为: https://pan.quark.cn/s/5c50e6120579 在Android移动应用开发中,定位功能扮演着极为关键的角色,尤其是在提供导航、本地搜索等服务时,它能够帮助应用获取用户的位置信息。以“baiduGPS.rar”为例,这是一个基于百度地图API实现定位功能的示例项目,旨在展示如何在Android应用中集成百度地图的GPS定位服务。以下是对该技术的详细阐述。 百度地图API简介 百度地图API是由百度提供的一系列开放接口,开发者可以利用这些接口将百度地图的功能集成到自己的应用中,涵盖地图展示、定位、路径规划等多个方面。借助它,开发者能够开发出满足不同业务需求的定制化地图应用。 Android定位方式 Android系统支持多种定位方式,包括GPS(全球定位系统)和网络定位(通过Wi-Fi及移动网络)。开发者可以根据应用的具体需求选择合适的定位方法。在本示例中,主要采用GPS实现高精度定位。 权限声明 在Android应用中使用定位功能前,必须在Manifest.xml文件中声明相关权限。例如,添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />,以获取用户的精确位置信息。 百度地图SDK初始化 集成百度地图API时,需要在应用启动时初始化地图SDK。通常在Application类或Activity的onCreate()方法中调用BMapManager.init(),并设置回调监听器以处理初始化结果。 MapView的创建 在布局文件中添加MapView组件,它是地图显示的基础。通过设置其属性(如mapType、zoomLevel等),可以控制地图的显示效果。 定位服务的管理 使用百度地图API的LocationClient类来管理定位服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值