2020年1月30日 OJ习题【今天很丧啊】

做题处处碰壁,只做对了几道简单的题

斐波那契的整除

这道题直接求值再判断肯定是不对的,(因为出题者肯定不是这个意思),但是通过打表找规律会发现,如果n能被12整除,那么f(n)就一定能被12整除;如果n能被4整除,那么f(n)就能被3整除;如果n能被6整除,那么f(n)就能被8整除,也就能被4整除了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
    ll n;
    while(cin>>n)
    {
        if(n%12==0) cout<<"YES"<<endl;
        else
        {
            if(n%4==0) cout<<"3"<<endl;
            else if(n%6==0) cout<<"4"<<endl;
            else cout<<"NO"<<endl;
        }
    }
    return 0;
}

回文字符串

这题想法就简单了,把原字符串调转过来,如果与原来的一样,就是回文串
只不过这里用栈的方式,入栈出栈,正好就能实现目的
然后用字符串比较函数就可以比较了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
stack<char> x;
int main()
{
    int n,j;
    char str1[110],str2[110];
    while(scanf("%d",&n)!=EOF)
    {
        getchar();
        for(int i=0;i<n;i++)
        {
            gets(str1);
            int l=strlen(str1);
            for(int t=0;t<l;t++)
            {
                x.push(str1[t]);
            }
            j=0;
            while(!x.empty())
            {
                str2[j]=x.top();
                x.pop();
                j++;
            }
            str2[j]='\0';
            if(strcmp(str1,str2)==0) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值