问题:
给你一个由小写字母组成的字符串 S ,现在计算这个字符串的成本并告诉它成本是否为 字符串是否为 2 的幂。 在这个问题中,成本是指给定字符串的字母顺序的总和。字母顺序表示 a = 1 , b = 2 , c = 3 ....... z = 26 并且,2 的幂是 2^n(2 的 n 次方)形式的数字,其中 n 是整数。 现在,如果成本是两个的幂,则打印 YES 和成本(以这种格式 2^n),否则打印 NO。 使用函数实现它。 示例输入 1: 示例输出 1: 编号 示例输入 2: 示例输出 2: 英国广播公司 是的 成本 = 2^3
#include<stdio.h>
#include<string.h>
int check(int c);
int cost(char str[]);
int main()
{
char str[100];
fgets(str,sizeof(str),stdin);
int c=cost(str);
check(c);
return 0;
}
//function to find the cost
int cost(char str[])
{
int c=0,d;
for (int i = 0; str[i]!='\0'; i++)
{
d=str[i];
c=(d-96)+c;
}
return c;
}
//function to check whether it's 2^n?
int check(int c)
{
int n=0;
while (c!=1)
{
if (c%2==0)
{
n++;
c=c/2;
}
else
{
printf("No\n");
return 0;
}
}
printf("Yes....2^%d\n",n);
}