当前位置: 首页> 游戏> 手游 > Codeforces Round 299 (Div. 2) B. Tavas and SaDDas(组合数学)

Codeforces Round 299 (Div. 2) B. Tavas and SaDDas(组合数学)

时间:2025/7/10 13:53:12来源:https://blog.csdn.net/puzhaoyu/article/details/142318916 浏览次数:0次

题目链接:题目

大意:

给出一个“幸运数”,每一位都是4或7,问这是从1开始第几个幸运数。

思路:

直接暴力数复杂度太高,实际上就是看有多少种4和7组合。当然数组合也不能乱数,为了思路清晰我是从大数位往小数位(用字符串输入就是从头开始遍历)比如4747,先看4000,显然后三位数有8个幸运数,再看700,后两位有4个幸运数,因为最高位是7,还要乘2,以此类推。
另外还顺便写了快速幂,也就是a不断平方,如果b的二进制位为1则把a乘到ans上。

代码:

#include <bits/stdc++.h>
using namespace std;#define int long long
#define MOD 1000000007
#define fi first
#define se second
#define pii pair<int,int>
#define vec vectorint pw(int a, int b){int ans = 1;while(b > 0){if(b & 1){ans *= a;}a *= a;b >>= 1;}return ans;
}void solve(){string s;cin >> s;int l = s.size(), ans = 0;for(int i = 0; i < l; i++){int x = pw(2, l - i - 1);if(s[i] == '4'){ans += x;}else{ans += 2 * x;}}cout << ans << '\n';
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t=1;while(t--){solve();}return 0;
}   
关键字:Codeforces Round 299 (Div. 2) B. Tavas and SaDDas(组合数学)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: